私はコアデータに2つのテーブル、たとえばテーブルTAとテーブルTBを持っています。TAはTBと1対多の関係にあります。TA には 1 つのレコード A1 があり、for ループで A1 にマッピングする TB に複数のレコード (B1、B2、..) が必要です。最初の反復では、db を照会して A1 を取得し、addTBObject:B1 を呼び出して、コンテキストを保存しませんでした。次の繰り返しで、再度クエリを実行して A1 を取得しますが、nil が返されます。(とても奇妙...)
最初の反復でコンテキストを保存すると、次の反復で再び A1 を取得しても問題ありません。しかし、これはより良い方法だとは思いません。これにより、1 つの for ループで多くの保存アクションが実行されることになります。
誰でもこれについて助けることができますか?それに感謝します!
コードの抜粋:
NSString* objBId = @"xxx";
for (int i=0; i< [dataArray count]; i++) {
ObjA obj = [dataArray objectAtIndex:i];
NSManagedObject* moObjA = [self getManagedObjAById:obj.objId inContext:context];
if(moObjA)
{
NSManagedObject* moObjB = [self getManagedObjBById:objBId inContext:context];
if (moObjB != nil)
{
[moObjB addAObject:moObjA];
[self saveDB:context]; //if don't save here, moObjB will be nil in the next iteration...
}
}
}