在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常量的用法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。