メインスレッドで NSManagedObject のプロパティを変更する状況があります。アプリのメインの ManagedObjectContext に属します。
私のアプリでは、データをダウンロードするスレッドが有効になっています。各スレッドには、アプリケーション全体で単一の PersistentStore の最新の状態から作成された独自の ManagedObjectContext があります。
NSManagedObjectContextDidSaveNotificationMOC の変更がメイン スレッドの MOC にもマージされるように実装しています。以下はそのコードです。
- (void)backgroundMOCDidSave:(NSNotification*)notification
{
    // Probable fix for: http://stackoverflow.com/questions/3446983/collection-was-mutated-while-being-enumerated-on-executefetchrequest
    if (![NSThread isMainThread])
    {
        [self performSelectorOnMainThread:@selector(backgroundMOCDidSave:) withObject:notification waitUntilDone:YES];
        return;
    }
    // We merge the background moc changes in the main moc
    [self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification];
}
この通知への登録:
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(backgroundMOCDidSave:)
                                                     name:NSManagedObjectContextDidSaveNotification
                                                   object:nil];
しかし、iOS 7 では奇妙なことが起こります。メイン MOC から作成された NSManagedObject にアクセスしています。
- メイン MOC (メイン スレッド) に属する ManagedObject のプロパティを変更して実行すると
-save、-backgroundMOCDidSave:呼び出しがトリガーされない - ManagedObject のプロパティを変更せず、
-saveその MOC で操作を実行するだけで、通知がトリガーされます 
iOS 6 でも同じコードが完全に機能しています。ManagedObject で変更が行われたかどうかに関係なく、-saveMOC で呼び出しがトリガーされると、通知NSManagedObjectContextDidSaveNotificationがトリガーされます。
以前にこの問題に直面した人はいますか?