核心数据关系不坚持

时间:2017-06-07 16:52:02

标签: ios arrays core-data

我正在尝试将一个实体添加到集合中,但在应用程序关闭后它不会持久存在。我的关系看起来像这样:

enter image description here

我创建了一个像这样的新任务:

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

此代码打印我未打开和关闭应用程序时提供的任务。由于某种原因,应用程序关闭时数据不会持久存在。有任何想法吗?感谢

1 个答案:

答案 0 :(得分:1)

确保您将上下文一直保存回持久存储(而不仅仅是父上下文)。