' [任务]&#39?;不可转换为'可选< [Any]>'

时间:2018-04-04 13:55:37

标签: swift generics types type-conversion optional

我已经进行了扩展

extension Optional where Wrapped == [Any] {
   var isNilOrEmpty: Bool {
       get {
           if let array = self {
              return array.count == 0
           } else {
            return false
           }
       }
    }
}

然后我尝试像这样使用它

if fetchedResults.fetchedObjects.isNilOrEmpty { ... }

我收到错误

  

' [任务]'不可转换为'可选< [Any]>'

但是,按照规范

  

任何可以表示任何类型的实例,包括函数类型。

这里我的错误是什么? 如果重要的话,Task是NSManagedObject的子类。

1 个答案:

答案 0 :(得分:5)

好吧,[Task][Any]是两种不同的类型,而Wrapped == [Any]将不起作用。

正确的方法是按协议限制Wrapped,而不是特定类型。

extension Optional where Wrapped: Collection {
    var isNilOrEmpty: Bool {
        get { // `get` can be omitted here, btw
            if let collection = self {
                return collection.isEmpty // Prefer `isEmpty` over `.count == 0`
            } else {
                return true // If it's `nil` it should return `true` too
            }
        }
    }
}