加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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'

Screen shot

为了让我更加困惑,如果删除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>!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读