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")
            }
    }

当立即部署到模拟器或真实设备时,所有这些都很好,但奇怪的是,当我想构建一个Ad-Hoc包用于测试时,它告诉我

应返回"UICollectionReusableView"的函数中缺少返回

好的,到目前为止一切都很好,交换机外壳之外没有任何东西,所以它可以什么都不返回——但为什么只有当我试图构建一个包时,它才不发出任何关于"热部署"的警告?

assert()仅在调试配置中进行评估。当你构建存档,然后在Release配置中编译代码(带有优化),并且条件被简单地忽略(假定为true)。因此编译器抱怨缺少返回值。

你可以使用

fatalError("Unexpected element kind")

相反。fatalError()总是被评估并附加标记使用@noreturn(Swift 3中相应的返回类型Never),这样编译器就知道它不会返回给调用方。

另请参阅Swift-带有Switch语句的致命错误。

相关内容

  • 没有找到相关文章

最新更新