在CoreData中的后台线程中创建实体

时间:2016-11-02 03:48:24

标签: swift core-data magicalrecord

我正在使用MagicalRecord,我正在尝试在后台线程中创建一个实体,然后在主线程中使用它。这是我的代码:

var localRecipe: Recipe?
MagicalRecord.save({ (localContext : NSManagedObjectContext!) in
    localRecipe = Recipe.createEntity()
    localRecipe?.name = "HiHi"

    }, completion: { (success : Bool, error : Error?) in

        print(localRecipe?.name)
        let recipe = localRecipe?.mr_(in: NSManagedObjectContext.mr_default())
        print(recipe?.name)
})

当我尝试在主上下文中检索 localRecipe 时,持久性存储中不存在该对象。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我相信Recipe.createEntity()正在默认上下文中创建Recipe

您应该使用块中提​​供的localContext来创建Recipe实体。例如: localRecipe = Recipe.createEntityInContext(localContext)

然后当保存localContext时,它应该合并到主要上下文NSManagedObjectContext.mr_default()