Ios 无法使用类型为“(NSFetchRequest)的参数列表调用“fetch”
我使用支持iOS 9.0+的Swift 3创建了一个帮助函数来加载NSManagedObjectsIos 无法使用类型为“(NSFetchRequest)的参数列表调用“fetch”,ios,swift3,Ios,Swift3,我使用支持iOS 9.0+的Swift 3创建了一个帮助函数来加载NSManagedObjects class func loadContext(entityName: String, fetchConfiguration: ((NSFetchRequest<NSManagedObject>) -> Void)?) -> AnyObject? { let appDelegate = UIApplication.shared.delegate as! AppDele
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
}
但是,我得到以下错误:
无法使用“NSFetchRequest”类型的参数列表调用“fetch”
我还尝试了几种变体,例如让dataFetchRequest=NSFetchRequestentityName:entityName,它们都遇到了相同的错误。我的问题已经回答了这一点 XCode提供的错误消息不正确。正确的解决方法是正确地转换您的返回和方法 managedObjectContext.fetch返回[Any]。您需要进行三项更改 类func loadContextentityName:String,fetchConfiguration:NSFetchRequest->Void?->[NSManagedObject]?{ 让dataFetchRequest=NSFetchRequestentityName:entityName 返回try appDelegate.managedObjectContext.fetchdataFetchRequest作为?[NSManagedObject]
我已经向苹果公司提交了一份错误报告-更改要简单得多,似乎xcode在将代码从swift-2转换为3.0时错误地推断了AnyObject类型 作为参考,这是@dmorrow解决方案中的固定函数
class func loadContext(entityName: String, fetchConfiguration: ((NSFetchRequest<NSManagedObject>) -> Void)?) -> [NSManagedObject]? {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
// Fetch requested data
let dataFetchRequest = NSFetchRequest<NSManagedObject>(entityName: entityName)
// Configure the fetch request with user parameters
fetchConfiguration?(dataFetchRequest)
do {
return try appDelegate.managedObjectContext.fetch(dataFetchRequest)
} catch {
print("Failed to fetch feed data, critical error: \(error)")
}
return nil
}
我遇到了完全相同的问题。你找到解决方案了吗?Swift 3中不允许普通呼叫吗?