如何在NSManagedObjectContext上正确调用fetch()?

时间:2017-03-09 16:18:21

标签: ios swift core-data nsfetchrequest

我正在学习CoreData。我一直在经历this tutorial,但在我的一个UIViewController方法中遇到了编译问题。除非我犯了一个明显的错误,这正是教程中的代码所做的。我正在使用Xcode 8.2.1。

func getStores() {
    guard let appDelegate =  UIApplication.shared.delegate as? AppDelegate else { return }
    let managedContext = appDelegate.persistentContainer.viewContext
    let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Store")

    do {
      // Compilation error on the next line:
      // Cannot convert value of type 'NSFetchRequest<Store>' to expected argument type 'NSFetchRequest<NSFetchRequestResult>
      stores = try managedContext.fetch(fetchRequest)
    } catch  {
      // handle error
    }
  }
}

解决方案:

在我的VC早期,我使用错误的CoreData实体声明了stores数组。修复这个错误解决了这个问题。

1 个答案:

答案 0 :(得分:1)

更改了行

let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Store")

要么:

let fetchRequest: NSFetchRequest<NSFetchRequestResult> = Store.fetchRequest()

let fetchRequest = NSFetchRequest<Store>(entityName: "Store")