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

前端之家收集整理的这篇文章主要介绍了swift – 如何将类型应用到NSFetchRequest实例?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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常量的用法

猜你在找的Swift相关文章