在 Swift 2 中,以下代码有效:
let request = NSFetchRequest(entityName: String)
但在 Swift 3 中它给出了错误:
无法推断通用参数“ResultType”
because NSFetchRequest
现在是泛型类型。他们在文件中写道:
let request: NSFetchRequest<Animal> = Animal.fetchRequest
所以如果我的结果类是例如Level
我该如何正确请求?
因为这不起作用:
let request: NSFetchRequest<Level> = Level.fetchRequest
let request: NSFetchRequest<NSFetchRequestResult> = Level.fetchRequest()
or
let request: NSFetchRequest<Level> = Level.fetchRequest()
取决于你想要哪个版本。
您必须指定泛型类型,否则方法调用将不明确。
第一个版本定义为NSManagedObject
,使用扩展名为每个对象自动生成第二个版本,例如:
extension Level {
@nonobjc class func fetchRequest() -> NSFetchRequest<Level> {
return NSFetchRequest<Level>(entityName: "Level");
}
@NSManaged var timeStamp: NSDate?
}
重点是删除字符串常量的使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)