我正在使用
Swift 3中的CoreData进行实验,并在Xcode 8 beta中遇到了一个非常奇怪的循环编译器错误.
NSFetchedResultsController需要一个泛型类型参数,AnyObject到目前为止工作正常.编译器抛出错误:
Type 'AnyObject' does not conform to protocol 'NSFetchRequestObject'
为了让我更加困惑,如果删除type参数,XCode会说:
Reference to generic type NSFetchedResultsController requires argument in `<...>`
并使用< AnyObject> ….帮助建议修复,循环重复.
这看起来非常像一个bug.我报告之前的任何想法?
解决方法
如果你看一下NSFetchedResultsController,你可以清楚地看到它有一个名为ResultType的参数,它符合NSFetchRequestResult.所以你应该传递一个符合NSFetchRequestResult的类型.
因此,如果您查看NSFetchRequestResult,您可以看到它符合NSObjectProtocol. NSDictionary,NSManagedobject和NSManagedobjectID也符合NSFetchRequestResult.
public protocol NSFetchRequestResult : NSObjectProtocol { } extension NSDictionary : NSFetchRequestResult { } extension NSManagedobject : NSFetchRequestResult { } extension NSManagedobjectID : NSFetchRequestResult { }
所以很明显,你应该从这三个NSDictionary或NSManagedobject或NSManagedobjectID中的任何一个传递一个类型.
像这样创建你的NSFetchedResultsController实例.
let resultsController : NSFetchedResultsController<NSManagedobject>!
或者像这样
let resultsController : NSFetchedResultsController<NSManagedobjectID>!
或者像这样
let resultsController : NSFetchedResultsController<NSDictionary>!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。