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

swift – 如何将类型应用到NSFetchRequest实例?

发布时间:2020-12-14 06:14:03 所属栏目:百科 来源:网络整理
导读:在Swift 2中,以下代码正在工作: let request = NSFetchRequest(entityName: String) 但在Swift 3它给出错误: Generic parameter “ResultType” could not be inferred 因为NSFetchRequest现在是一个通用类型。在他们的文件中,他们写道: let request: N
在Swift 2中,以下代码正在工作:
let request = NSFetchRequest(entityName: String)

但在Swift 3它给出错误:

Generic parameter “ResultType” could not be inferred

因为NSFetchRequest现在是一个通用类型。在他们的文件中,他们写道:

let request: NSFetchRequest<Animal> = Animal.fetchRequest

所以如果我的结果类是例如级别我应该如何正确请求?

因为这不工作:

let request: NSFetchRequest<Level> = Level.fetchRequest
let request: NSFetchRequest<NSFetchRequestResult> = Level.fetchRequest()

要么

let request: NSFetchRequest<Level> = Level.fetchRequest()

取决于你想要的版本。

您必须指定通用类型,否则方法调用是不明确的。

第一个版本是为NSManagedObject定义的,第二个版本是使用扩展名为每个对象自动生成的,例如:

extension Level {
    @nonobjc class func fetchRequest() -> NSFetchRequest<Level> {
        return NSFetchRequest<Level>(entityName: "Level");
    }

    @NSManaged var timeStamp: NSDate?
}

整个关键是要去掉String常量的用法。

(编辑:李大同)

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

    推荐文章
      热点阅读