在 Swift 2 中,以下代码有效:
let request = NSFetchRequest(entityName: String)
但在 Swift 3 中它给出了错误:
Generic parameter "ResultType" could not be inferred
因为 NSFetchRequest
现在是一个通用类型。他们在他们的文件中写道:
let request: NSFetchRequest<Animal> = Animal.fetchRequest
所以如果我的结果类是 Level
我应该如何正确请求?
因为这不起作用:
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?
}
重点是删除字符串常量的使用。
关于swift - 如何将类型应用于 NSFetchRequest 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37889121/