2014-03-03 40 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方法。我使用這個版本是因爲導入功能沒有問題。 –