2017-04-10 8 views
0

私は、MagicalRecordを使用してCoreDataに設定を保存するいくつかの方法があります。しかし、その後、私はこれを行うにしようとしています、私はこのエラーを取得:今異なるコンテキストエラーでMagicalRecordとCoreDataを保存する

-(void)saveSettingsFirst:(BOOL)first{ 
    [MagicalRecord saveWithBlockAndWait:^(NSManagedObjectContext *localContext){ 
     SettingsData *newData = [self settingsDataForCurrentUserInContext:localContext]; 

     //SettingsData *newData = [SettingsData MR_createEntityInContext:localContext]; 
     newData.firstValue = @(first); 
     NSLog(first ? @"saveSettings FIRST 0" : @"saveSettings FIRST 1"); 
     newData.settings = [[CacheManager shared] currentUserWithContext:localContext]; 

     NSLog(@"Settings one is saved"); 
    }]; 
} 

この方法は、この方法は、特定のユーザーがデータを保存している 、使用しているプログラムの開発:だからここIllegal attempt to establish a relationship 'settings' between objects in different contexts

は私のコードです

-(SettingsData*)settingsDataForCurrentUserInContext:(NSManagedObjectContext*)context{ 
    NSLog(@"In settingsDataForCurrentUserInContext"); 
    SettingsData *settings = [SettingsData MR_findFirstByAttribute:@"settings" withValue:[[CacheManager shared] currentUserWithContext:context]]; 
    return settings; 
} 

そして最後の方法、CoreDataから現在のユーザーのためのuserDataを取得:

CoreDataからあるCurrentUserの設定を撮ります

私が間違っていたことを認識するのに助けが必要です。なぜなら、私にとってはすべて論理に見えるからです。

答えて

0

SettingsDataをフェッチするときにデフォルトのコンテキストを使用しています。だから、変更:

SettingsData *settings = [SettingsData MR_findFirstByAttribute:@"settings" withValue:[[CacheManager shared] currentUserWithContext:context]];

へ:

SettingsData *settings = [SettingsData MR_findFirstByAttribute:@"settings" withValue:[[CacheManager shared] currentUserWithContext:context] inContext: context];

(免責事項:ブラウザで入力し、タイプミスのためにテストされていません)

+0

オーケー、それは働きます!ありがとうございました! これはなぜ動作したのかを説明するためのリンクを付けることができますか?私はすでにコンテキストをユーザーに読み込んでおり、読み込みに成功しているからです。しかし私が見ることができるように、同じ文脈で検索する必要があります。 –

+0

はい、常に同じコンテキストを使用してください。 MRコードをチェックすると、元の行がデフォルトのコンテキストを使用していることがわかります。しかし、あなたはローカルコンテキストを渡しているので、それを調整する必要があります。 – Koen

+0

こちらもご覧ください:https://github.com/magicalpanda/MagicalRecord/wiki/Fetching-Entities#finding-entities-in-a-specific-context – Koen

関連する問題