2013-11-02 45 views
1

我正在使用魔法記錄2.1來處理我的應用程序中的數據持久性。如果我創建一個新的實體,設置它的一些屬性並保存,它可以正常工作。但是,後來,如果我獲取該實體,更新它的屬性並保存,則後續提取將獲得新數據,直到我終止該應用並重新啓動。在新應用程序會話期間,舊數據會再次出現。魔法記錄似乎保存,但如果終止應用程序,更改將丟失

這是我如何創建一個新的實體:

self.localContext = [NSManagedObjectContext MR_defaultContext]; 
self.theNewListing = [Listing MR_createInContext:self.localContext]; 

我使用看了MRDefaultContext這個博客帖子:http://saulmora.com/2013/09/15/why-contextforcurrentthread-doesn-t-work-in-magicalrecord/

在這種情況下,我的主要屬性是一本字典,我把它像這樣:

NSMutableDictionary *tempDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"A description", @"slFieldDescription", etc, etc, nil]; 
self.theNewListing.dataDictionary = tempDictionary; 

這是我如何保存:

[self.presentingViewController dismissViewControllerAnimated:YES completion:^(void) { 

    [self.localContext MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error){ 
     if(!success) { 
      NSLog(@"%@", error); 
     } 
     else { 
      [self.thePresentingVC refreshCollectionViews:nil]; 
     } 
    }]; 
}]; 

我在集合視圖中顯示我的數據,此時一切都很正常。如果我終止並重新啓動數據仍然存在。

如果我再次讀取該實體和更新這樣的屬性:

NSMutableDictionary *newTempDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"A new description", @"slFieldDescription", etc, etc, nil]; 
self.theNewListing.dataDictionary = newTempDictionary; 

然後保存使用與上述相同的保存代碼,然後用下面的代碼更新我的收藏看法,一切看起來不錯。

self.listingsArray = [[NSMutableArray alloc] initWithArray:[Listing MR_findAllSortedBy:@"dateListed" ascending:NO]]; 
[self.mainCollectionView reloadData]; 

也就是說,直到我退出應用程序並重新啓動。

如果您想知道,我正在使用FTASync,並且這隻支持MR 2.1,這就是爲什麼我沒有升級到最新版本。

謝謝!

回答

0

不知道MR,也不知道爲什麼你需要它。如果該框架可以爲您提供主要上下文,則只需調用本地Core Data保存即可。

[context save:nil]; 
+0

MR是偉大的,當它的工作原理!它節省了很多時間。另外,我也在使用需要MR的FTASync。我試圖在MR保存作爲測試之後添加核心數據保存,但仍然沒有運氣。 –

相關問題