エンティティをセットに追加しようとしていますが、アプリケーションを閉じた後でも保持されません。コアデータの関係が維持されない
groups[0].mutableSetValue(forKey: "tasks").add(task)
どこのグループ:私はこのようなグループエンティティにタスクを追加
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)")
}
:私はこのような新しいタスクを作成
:私の関係はこのようになります次のように値がviewDidLoad:
にロードされたNSManagedObject配列です。
//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)")
}
グループが正しく設定されているため、作成したすべてのグループがあります。しかし、関係は存在しません。これは何も印刷しません:
このコードは、私がアプリケーションを開いたり閉じたりしないで印刷します。何らかの理由で、アプリケーションが終了してもデータが保持されません。何か案は?ありがとう
タスクをグループに追加した後にコンテキストを保存していますか?上記のあなたの例では私はそれを見ません。これは行わなければなりません。 –
関連はありませんが、AppDelegateを守りません。強制的にアンラップします。クラスが見つからない場合、あなたのアプリは起動しません。 – vadian