我的获取请求从我认为已成功将数据放入的实体返回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,所以在这一点上我必须假设有一些基本的东西,我只是缺少了。
提前致谢。
答案 0 :(得分:0)
假设您使用的是标准Core Data模板,则需要为managedObjectContext
类中的LiftLogTableViewController
属性赋值。
例如在viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
managedObjectContext = appDelegate.managedObjectContext
}
但推荐的方法是通过segue传递上下文。