我创建了一个辅助函数来加载 NSManagedObject
使用 Swift 3,支持 iOS 9.0+。
class func loadContext(entityName: String, fetchConfiguration: ((NSFetchRequest<NSManagedObject>) -> Void)?) -> AnyObject? {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
// Fetch requested data
let dataFetchRequest = NSFetchRequest<NSManagedObject>(entityName: entityName)
// Configure the fetch request with user parameters
if fetchConfiguration != nil {
fetchConfiguration!(dataFetchRequest)
}
do {
return try appDelegate.managedObjectContext.fetch(dataFetchRequest as! NSFetchRequest<NSFetchRequestResult>)
} catch {
print("Failed to fetch feed data, critical error: \(error)")
}
return nil
}
但是我收到以下错误:
Cannot invoke 'fetch' with an argument list of type '(NSFetchRequest<NSFetchRequestResult>)'
我还尝试了几种变体,例如 let dataFetchRequest = NSFetchRequest<NSFechRequestResult>(entityName: entityName)
他们都遇到了同样的错误。
最佳答案
这已回答我的问题Swift 3/XCode 8 NSManagedObjectContext.fetch error .
XCode 提供的错误消息不正确。正确的解决方法是正确转换您的返回值和方法。
managedObjectContext.fetch()
返回[Any]
。您需要进行三项更改。
-
class func loadContext(entityName: String, fetchConfiguration: ((NSFetchRequest<NSManagedObject>) -> Void)?) -> [NSManagedObject]? {
-
let dataFetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: entityName)
-
return try appDelegate.managedObjectContext.fetch(dataFetchRequest) as? [NSManagedObject]
我已向 Apple 提交了错误报告 - https://openradar.appspot.com/radar?id=5049582866137088
关于ios - 无法使用 'fetch' 类型的参数列表调用 '(NSFetchRequest<NSFetchRequestResult>)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39650095/