我正在迁移到 Swift 3,在迁移抽象 CoreData 查询代码时遇到了一条非常奇怪的错误消息。 entityName
传递给以下方法:
func objects(entityName name:String)->[NSManagedObject]? {
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName:name)
var objects: [NSManagedObject]?
do {
objects = try managedObjectContext.fetch(fetchRequest)
} catch { ... }
}
这会导致以下错误:
Cannot invoke 'fetch' with an argument list of type '(NSFetchRequest<NSFetchRequestResult>)' Expected an argument list of type '(NSFetchRequest<NSFetchRequestResult>)'
错误是说我不能使用它期望的类型。 是否可以在 Swift 3 中像这样对 CoreData 进行抽象调用?
帖子How to apply the type to a NSFetchRequest instance?是我走到这一步的原因。
我试着投 fetchRequest
,但它没有改变任何东西。
managedObjectContext.fetch(fetchRequest as! NSFetchRequest<NSFetchRequestResult>)
最佳答案
试试这个:
do {
objects = try managedObjectContext.fetch(fetchRequest) as! [YourEntityName]
} catch {
print(error)
}
关于ios - Swift 3/XCode 8 NSManagedObjectContext.fetch 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779846/