Я использую Magical Record 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 велик, когда он работает! Это экономит много времени. Кроме того, я также использую FTASync, который требует MR. Я попытался добавить в основные данные save после сохранения MR в качестве теста, но все равно не повезло. –