我正在尝试将一个实体添加到集合中,但在应用程序关闭后它不会持久存在。我的关系看起来像这样:
我创建了一个像这样的新任务:
guard let appDelegate =
UIApplication.shared.delegate as? AppDelegate else {
return
}
// 1
let managedContext =
appDelegate.persistentContainer.viewContext
// 2
let entity =
NSEntityDescription.entity(forEntityName: "Task",
in: managedContext)!
let task = NSManagedObject(entity: entity,
insertInto: managedContext)
// 3
task.setValue(cell.taskTextField.text, forKeyPath: "name")
// 4
do {
try managedContext.save()
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}
我将任务添加到这样的组实体:
groups[0].mutableSetValue(forKey: "tasks").add(task)
其中groups是NSManagedObject数组,其值在viewDidLoad:
中加载,如下所示:
//1
guard let appDelegate =
UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext =
appDelegate.persistentContainer.viewContext
//2
let fetchRequest =
NSFetchRequest<NSManagedObject>(entityName: "Group")
//3
do {
groups = try managedContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
这些组正确填充,我拥有我创建的所有组。但是没有关系存在。这没有任何打印:
let set = groups[0].mutableSetValue(forKey: "tasks")
for tasks in set{
print(tasks)
}
此代码打印我未打开和关闭应用程序时提供的任务。由于某种原因,应用程序关闭时数据不会持久存在。有任何想法吗?感谢
答案 0 :(得分:1)
确保您将上下文一直保存回持久存储(而不仅仅是父上下文)。