“[任务]?”无法转换为“可选的<[任何]>”。

4
我已经制作了扩展。
extension Optional where Wrapped == [Any] {
   var isNilOrEmpty: Bool {
       get {
           if let array = self {
              return array.count == 0
           } else {
            return false
           }
       }
    }
}

然后我尝试像这样使用它。
if fetchedResults.fetchedObjects.isNilOrEmpty { ... }

我遇到了错误

'[Task]?' 无法转换为 'Optional<[Any]>'

但是,根据规范

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

我的错误在哪里?如果需要的话,Task 是 NSManagedObject 的子类。


有趣的是,如果正确使用Core Data API来获取数据,它永远不会返回nil - vadian
1个回答

6

其实,[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
            }
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接