UICollectionReusableView - Отсутствует возвращение в функции
У меня была странная проблема, связанная с рассмотрением заголовка UICollectionView
,
Я в основном использовал код от: http://www.raywenderlich.com/78551/beginning-ios-collection-views-swift-part-2
func collectionView(collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd.MM.yyyy' - 'HH:mm'"
//1
switch kind {
//2
case UICollectionElementKindSectionHeader:
//3
let h =
collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "eventHeaderView", forIndexPath: indexPath) as eventHeader
h.eventFirstline.text = "First Line"
h.eventSecondline.text = thisEvent.eventName
h.eventDate.text = dateFormatter.stringFromDate(thisEvent.startDate)
h.eventDescription.text = thisEvent.shortDescription
return h
default:
//4
assert(false, "Unexpected element kind")
}
}
Все это прекрасно работает при мгновенном развертывании на симуляторе или на реальном устройстве, но странно, когда я хочу создать специальный пакет для тестирования, он говорит мне
Отсутствует возвращение в функции, которая должна возвращать UICollectionReusableView
Хорошо, пока все хорошо, за пределами корпуса коммутатора ничего нет, поэтому он ничего не может вернуть - но почему он не выдает никаких предупреждений о "горячем развертывании", только когда я пытаюсь собрать пакет?
1 ответ
assert()
оценивается только в конфигурации Debug. При создании архива код компилируется в конфигурации выпуска (с оптимизацией), а условие просто игнорируется (предполагается, что true
). Поэтому компилятор жалуется на отсутствующее возвращаемое значение.
Ты можешь использовать
fatalError("Unexpected element kind")
вместо. fatalError()
всегда оценивается и дополнительно помечается @noreturn
(соответственно тип возврата Never
в Swift 3), чтобы компилятор знал, что он не возвращается к своему вызывающему.
Смотрите также Swift - fatalError с заявлениями о переключении.