类型“AnyObject”不符合协议“NSFetchRequestResult”

Posted

技术标签:

【中文标题】类型“AnyObject”不符合协议“NSFetchRequestResult”【英文标题】:Type 'AnyObject' does not conform to protocol 'NSFetchRequestResult' 【发布时间】:2016-07-11 15:55:29 【问题描述】:

我刚刚安装了Xcode 8 beta 2ios 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&lt;Content&gt;!

【问题讨论】:

您还想在NSFetchedResultsController 中使用什么作为NSManagedObject(或子类)? @vadian 类内容:NSManagedObject。这是你要求的吗? 实际上这是一个反问:NSFetchedResultsController 仅适用于符合NSFetchRequestResultNSManagedObject。将NSFetchRequestResult 扩展为AnyObject 是没用的。 【参考方案1】:

Xcode 转换器可能对您想要在此获取的结果控制器中返回的 Entity 感到困惑。将 AnyObject 替换为您正在获取的实体类型。

您应该在此打开一个雷达 (bugreporter.apple.com),因为它不应该在这里建议 AnyObject。在最坏的情况下,它应该建议NSManagedObject

【讨论】:

我能够使用代码删除错误:var fetchedResultsController: NSFetchedResultsController!

以上是关于类型“AnyObject”不符合协议“NSFetchRequestResult”的主要内容,如果未能解决你的问题,请参考以下文章

类型 [String: String] 不符合协议 'AnyObject'

不支持用作符合协议 AnyObject 的具体类型

类型“AnyObject”不符合协议“NSFetchRequestResult”

类型“NSFastEnumerationIterator.Element”(又名“Any”)不符合协议“AnyObject”

type() 不符合协议 anyobject

NSFastEnumerationIterator.Element(又名 Any)不符合协议“AnyObject”