为什么我的fetchRequest返回nil?

时间:2016-05-28 19:26:28

标签: swift core-data nsfetchrequest

我的获取请求从我认为已成功将数据放入的实体返回nil,经过数小时的调试后,我无法弄明白。 (免责声明:我已经看过SO上的无数线程,讨论了获取请求和解包选项,但我找到的每一个都是关于如何处理解包错误。我正在寻求帮助,弄清楚为什么我的获取请求不是当我相信它应该返回记录时。)

在我将要显示数据的视图控制器中,我在viewWillAppear中有这个:

call

但我相信那里有记录,因为在AppDelegate.addData()中我做到了:

class LiftLogTableViewController: UITableViewController {

    var managedObjectContext: NSManagedObjectContext!
    var liftEvents = [LiftEvent]() 

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

    let fetchRequest = NSFetchRequest(entityName: "LiftEvent")

    do {
      if let results = try managedObjectContext.executeFetchRequest(fetchRequest) as? [LiftEvent] {
        liftEvents = results  <---- nil error happening here

        }
    }  catch {
      fatalError("Error fetching data!")
    }
  }

我正在学习CoreData,所以在这一点上我必须假设有一些基本的东西,我只是缺少了。

提前致谢。

1 个答案:

答案 0 :(得分:0)

假设您使用的是标准Core Data模板,则需要为managedObjectContext类中的LiftLogTableViewController属性赋值。

例如在viewDidLoad

override func viewDidLoad() {
  super.viewDidLoad()
  let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
  managedObjectContext = appDelegate.managedObjectContext
}

但推荐的方法是通过segue传递上下文。