ios - 无法使用 'fetch' 类型的参数列表调用 '(NSFetchRequest<NSFetchRequestResult>)'

标签 ios swift3

我创建了一个辅助函数来加载 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] 。您需要进行三项更改。

  1. class func loadContext(entityName: String, fetchConfiguration: ((NSFetchRequest<NSManagedObject>) -> Void)?) -> [NSManagedObject]? {
  2. let dataFetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: entityName)
  3. 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/

相关文章:

ios - 如何将协议(protocol)更改为类型别名或闭包

ios - 单击导航 Controller 前的按钮时出现黑屏

swift - 关于 Swift 函数、命名参数和类型管理

iphone - 带有自定义单元格的 TableView

ios - 多个 Storyboard未加载本地化

ios - 在单元格上设置 backgroundView 后 UITableViewCells 之间的垂直空间

ios - 带有 Core Audio AudioQueue 的 AVFoundation session

c# - 检索 iPhone 电池健康状况

core-data - 是否可以在 iOS 9 和 10 中使用核心数据(Xcode 8 和 Swift 3.0)?

ios - 手势抛出无法识别的选择器错误