UICollectionReusableView - 函数中缺少返回

时间:2015-03-19 15:44:11

标签: ios swift uicollectionview 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'的函数中缺少返回

好的,到目前为止一切都很好,切换外壳没有任何东西,所以它什么都不返回 - 但是为什么只有当我尝试构建一个包时才会对“热部署”发出任何警告?

1 个答案:

答案 0 :(得分:47)

仅在Debug配置中评估

assert()。当你建立 然后,在Release配置中编译代码 (使用优化)并且简单地忽略条件(假设 是true)。因此编译器抱怨丢失 返回值。

您可以使用

fatalError("Unexpected element kind")

代替。始终会对fatalError()进行评估并进行标记 使用@noreturn(在Swift 3中返回类型Never),以便编译器知道它不会返回其调用者。

另见Swift - fatalError with Switch Statements