我在覈心數據中有兩個表,比如表TA和表TB,TA與TB有一對多的關係。 在TA中有一條記錄A1,我想在for循環中將幾條記錄(B1,B2,...)映射到A1。 在第一次迭代中,我查詢數據庫並獲得A1,調用addTBObject:B1並沒有保存上下文。 在下一次迭代中,再次查詢以獲取A1,但返回nil。 (所以很奇怪......)核心數據關係保存問題
如果我在第一個interation中保存上下文,那麼在下一次迭代中再次獲得A1是可以的。但我不認爲這是一個更好的做法,這將導致一個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...
}
}
}
請分享一些代碼。 – proxi
剛剛更新,謝謝! – ffprintf
你確定getManagedObj_ById是否正確實現?同時檢查你的關係是否被正確設置爲對多。除此之外,我看不到任何可疑的東西。 – proxi