考虑到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")
}
}
当立即部署到模拟器或真实设备时,所有这一切都可以正常工作,但奇怪的是,当我想为测试目的构建Ad-Hoc包时,它告诉我
在预期返回'UICollectionReusableView'的函数中缺少返回
好的,到目前为止一切都很好,切换外壳没有任何东西,所以它什么都不返回 - 但是为什么只有当我尝试构建一个包时才会对“热部署”发出任何警告?
答案 0 :(得分:47)
assert()
。当你建立
然后,在Release配置中编译代码
(使用优化)并且简单地忽略条件(假设
是true
)。因此编译器抱怨丢失
返回值。
您可以使用
fatalError("Unexpected element kind")
代替。始终会对fatalError()
进行评估并进行标记
使用@noreturn
(在Swift 3中返回类型Never
),以便编译器知道它不会返回其调用者。