我正在使用魔法記錄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,這就是爲什麼我沒有升級到最新版本。
謝謝!
MR是偉大的,當它的工作原理!它節省了很多時間。另外,我也在使用需要MR的FTASync。我試圖在MR保存作爲測試之後添加核心數據保存,但仍然沒有運氣。 –