핵심 데이터에 두 개의 테이블이 있습니다. 예를 들어 테이블 TA와 테이블 TB, TA는 TB와 일대 다 관계가 있습니다. TA에 하나의 레코드 A1이 있으며, for 루프의 TB 매핑에서 여러 레코드 (B1, B2, ..)를 갖고 싶습니다. 첫 번째 반복에서 db를 쿼리하고 A1을 가져오고 addTBObject : B1을 호출하고 컨텍스트를 저장하지 않았습니다. 다음 반복에서 A1을 얻기 위해 다시 쿼리하지만 nil을 반환합니다. (그래서 이상한 ...)CoreData 관계 저장 문제
첫 번째 인터렉션에서 컨텍스트를 저장하면 다음 반복에서 A1을 다시 얻는 것이 좋습니다. 하지만 이것은 더 나은 방법이라고 생각하지 않습니다. 하나의 루프에 많은 저장 작업이 발생하게됩니다.
아무도 도와 드릴 수 있습니까? 그것에 감사드립니다!
코드 추출물 :
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