类型“AnyObject”不符合协议“NSFetchRequestResult”
Posted
技术标签:
【中文标题】类型“AnyObject”不符合协议“NSFetchRequestResult”【英文标题】:Type 'AnyObject' does not conform to protocol 'NSFetchRequestResult' 【发布时间】:2016-07-11 15:55:29 【问题描述】:我刚刚安装了Xcode 8 beta 2
和ios 10 beta
。我有一个现有项目,我根据 Xcode 的提示从 swift 2.3 更新到 swift 3。我的代码数据代码出现错误。
这是在 xcode 从 swift 2.3 到 swift 3 的转换中自动生成的
var fetchedResultsController: NSFetchedResultsController<AnyObject>!
我收到的错误是
Type 'AnyObject' does not conform to protocol 'NSFetchRequestResult'
我试图符合 AnyObject
extension AnyObject: NSFetchRequestResult
但我收到另一个错误
我不确定我需要做什么,或者我的 fetchedResultsController 是否需要首先更改。
回答:var fetchedResultsController: NSFetchedResultsController<Content>!
【问题讨论】:
您还想在NSFetchedResultsController
中使用什么作为NSManagedObject
(或子类)?
@vadian 类内容:NSManagedObject。这是你要求的吗?
实际上这是一个反问:NSFetchedResultsController
仅适用于符合NSFetchRequestResult
的NSManagedObject
。将NSFetchRequestResult
扩展为AnyObject
是没用的。
【参考方案1】:
Xcode 转换器可能对您想要在此获取的结果控制器中返回的 Entity
感到困惑。将 AnyObject
替换为您正在获取的实体类型。
您应该在此打开一个雷达 (bugreporter.apple.com),因为它不应该在这里建议 AnyObject
。在最坏的情况下,它应该建议NSManagedObject
。
【讨论】:
我能够使用代码删除错误:var fetchedResultsController: NSFetchedResultsController以上是关于类型“AnyObject”不符合协议“NSFetchRequestResult”的主要内容,如果未能解决你的问题,请参考以下文章
类型 [String: String] 不符合协议 'AnyObject'
类型“AnyObject”不符合协议“NSFetchRequestResult”
类型“NSFastEnumerationIterator.Element”(又名“Any”)不符合协议“AnyObject”