Swift 3 / XCode 8 NSManagedObjectContext.fetch错误 [英] Swift 3/XCode 8 NSManagedObjectContext.fetch error
问题描述
我正在迁移到Swift 3,并在迁移抽象CoreData查询代码时遇到一个非常奇怪的错误消息。 entityName
传递给以下方法:
I am migrating to Swift 3 and have come across a very strange error message while migrating abstract CoreData query code. entityName
is passed to the following method:
func objects(entityName name:String)->[NSManagedObject]? {
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName:name)
var objects: [NSManagedObject]?
do {
objects = try managedObjectContext.fetch(fetchRequest)
} catch { ... }
}
这会导致以下错误:
无法使用参数列表类型(NSFetchRequest< NSFetchRequestResult>)'
期望的类型为'(NSFetchRequest< NSFetchRequestResult>)'的参数列表
Cannot invoke 'fetch' with an argument list of type '(NSFetchRequest<NSFetchRequestResult>)' Expected an argument list of type '(NSFetchRequest<NSFetchRequestResult>)'
错误是说我不能使用其期望的类型。
是否可以像这样在Swift 3中对CoreData进行抽象调用?
The error is stating I can't use the type its expecting. Is it possible to make abstract calls to CoreData like this in Swift 3?
我尝试了 fetchRequest
,但它没有改变任何东西。
managedObjectContext.fetch(fetchRequest as!NSFetchRequest< NSFetchRequestResult>)
I tried to cast fetchRequest
, but it didn't change anything.
managedObjectContext.fetch(fetchRequest as! NSFetchRequest<NSFetchRequestResult>)
推荐答案
尝试:
do {
objects = try managedObjectContext.fetch(fetchRequest) as! [YourEntityName]
} catch {
print(error)
}
这篇关于Swift 3 / XCode 8 NSManagedObjectContext.fetch错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!