ios - Swift 3/XCode 8 NSManagedObjectContext.fetch 错误

标签 ios swift core-data swift3 xcode8

我正在迁移到 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/

相关文章:

ios - 如何在 Adob​​e Air iOS 应用程序中访问 iOS native API?

iOS Swift 3 - 有没有人设法使用自定义 UI 实现 Google Place API 的新 GMSPlacePickerViewController?

ios - 应用程序从后台状态转到前台时的 OpenTok 视频通话问题

ios - Swift Alamofire 发送图像数组和其他参数

cocoa - NSOutlineView 与核心数据驱动的绑定(bind)

ios - 每秒保存到核心数据性能

ios - CoreData导入和升级策略

ios - NSXMLParser 解析在 XML 文档中途中断

swift - 获取视频数组的缩略图

ios - 魔法记录核心数据错误