2014-03-03 103 views
0

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

我在这里创建我的球员:

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { 

    Player *player = [Player MR_createInContext:localContext]; 
    [player MR_importValuesForKeysWithObject:responseData]; 


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

}]; 

然后我取已创建的所有球员,并试图修改通过“=”

player.name = @"Alex"; 

一些财产,但它仅适用于当前“正在运行”,正如我在重新加载应用时所说的那样,名称的值在第一次创建时是相同的。

回答

0

您需要在编辑它后保存该属性。做这样的事情。

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

[[NSManagedObjectContext MR_defaultContext] saveToPersistentStoreAndWait]; 

您可以[NSManagedObjectContext MR_context]如果你想使用一个本地版本或[NSManagedObjectContext MR_contextForCurrentThread]也切换出[NSManagedObjectContext MR_defaultContext]。我确实在某个地方读过,不想在旧版本的MagicalRecord中使用MR_contextForCurrentThread,但不确定是否仍然适用。我正在使用它没有问题。

+0

是的,你不想再使用contextForCurrentThread,因为它在使用并行GCD队列时不是100%安全的。 – casademora

+0

@谢谢。我使用神奇记录2.0.8,似乎它没有得到saveToPersistentStoreAndWait方法。我使用这个版本是因为导入功能没有问题。 –