2017-06-07 12 views
0

エンティティをセットに追加しようとしていますが、アプリケーションを閉じた後でも保持されません。コアデータの関係が維持されない

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)") 
    } 

:私はこのような新しいタスクを作成

enter image description here

:私の関係はこのようになります次のように値が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)") 
    } 

グループが正しく設定されているため、作成したすべてのグループがあります。しかし、関係は存在しません。これは何も印刷しません:

​​

このコードは、私がアプリケーションを開いたり閉じたりしないで印刷します。何らかの理由で、アプリケーションが終了してもデータが保持されません。何か案は?ありがとう

+1

タスクをグループに追加した後にコンテキストを保存していますか?上記のあなたの例では私はそれを見ません。これは行わなければなりません。 –

+0

関連はありませんが、AppDelegateを守りません。強制的にアンラップします。クラスが見つからない場合、あなたのアプリは起動しません。 – vadian

答えて

1

(親コンテキストだけでなく)永続ストアまでコンテキストを保存していることを確認してください。

+0

ありがとう! – foobar5512

関連する問題