core-data – 无法在Swift 3中使用泛型类型AnyObject实例化NSFet
发布时间:2020-12-14 04:48:14 所属栏目:百科 来源:网络整理
导读:我正在使用 Swift 3中的CoreData进行实验,并在Xcode 8 beta中遇到了一个非常奇怪的循环编译器错误. NSFetchedResultsController需要一个泛型类型参数,AnyObject到目前为止工作正常.编译器抛出错误: Type 'AnyObject' does not conform to protocol 'NSFetch
我正在使用
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>! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |