0

日付列と変換可能列(NSDictionary)を含むNSManagedObjectがあります。日付列と変換可能列の両方が、独自のコンテキストのバックグラウンドスレッドで更新されてから、メインスレッドのコンテキストにマージされます。日付列は更新されて適切に保存されていますが、変換可能列はそうではありません。変換可能な列は次のように更新されます。

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; 
[nc addObserver:self selector:@selector(mergeChanges:) name:NSManagedObjectContextDidSaveNotification object:managedObjectContext];
NSMutableDictionary *newUserDataDictionary = [NSMutableDictionary dictionaryWithDictionary:object.userDataDictionary];            
//Updated newUserDataDictionary here 
object.date = calendarDay.date;
object.userDataDictionary = newUserDataDictionary;
if (![managedObjectContext save:&error]) {
  NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

mergeChangesの場合:次のものがあります。

- (void)mergeChanges:(NSNotification *)notification
{    
AppDelegate *delegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
// Merge changes into the main context on the main thread
[delegate.managedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
                              withObject:notification
                           waitUntilDone:YES];  
}

助けてください。

4

1 に答える 1

0

問題はmergeChangesFromContextDidSaveNotificationメソッドにあるはずです。このメソッドが呼び出されているかどうかを確認します。はいの場合、問題はそこにあります。

于 2011-11-14T20:50:27.507 に答える