MagicalRecord保存属性问题的新值



我有一个Player属性。我把它传给另一个控制器。在这个控制器中,我修改播放器的属性。所以当我回到上一个控制器时。我可以看到玩家每个属性的所有新值。但当我重新加载应用程序时,控制器会向我显示玩家的第一个值。

我在这里创建我的播放器:

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Player *player = [Player MR_createInContext:localContext];
[player MR_importValuesForKeysWithObject:responseData];

} completion:^(BOOL success, NSError *error) {
}];

然后我获取所有已经创建的玩家,并尝试通过'='修改一些属性

player.name = @"Alex";

但它只适用于当前"运行"的应用程序,正如我在重新加载应用程序时所说,名称的值在第一次创建时是相同的。

您需要在编辑属性后保存它。执行以下操作。

Player *players = [Player MR_findAllInContext:[NSManagedObjectContext MR_defaultContext]];
for (Player *player in players) {
player.name = @"modified name";
}
[[NSManagedObjectContext MR_defaultContext] saveToPersistentStoreAndWait];

如果要使用本地版本或[NSManagedObjectContext MR_contextForCurrentThread],也可以使用[NSManagedObjectContext MR_context]切换[NSManagedObjectContext MR_defaultContext]。我确实在某个地方读到了在旧版本的MagicalRecord中不使用MR_contextForCurrentThread的内容,但不确定这是否仍然适用。我正在毫无问题地使用它。

最新更新