2012-09-05 2 views
0

코어 데이터 (다 대다) 관계를 이해하려고합니다. >> TransactionDetails 코어 데이터에서 일대일 관계가되지 않음

NSManagedObjectContext *context = [self managedObjectContext]; 
NSManagedObject *personDetails = [NSEntityDescription 
            insertNewObjectForEntityForName:@"PeopleList" 
            inManagedObjectContext:context]; 

[personDetails setValue:[person fullName] forKey:@"name"]; 

NSManagedObject *transactionDetails = [NSEntityDescription 
             insertNewObjectForEntityForName:@"TransactionDetails" 
             inManagedObjectContext:context]; 


[transactionDetails setValue:[NSNumber numberWithFloat:oweAmount] forKey:@"amount"]; 

NSError *error; 
if (![context save:&error]) { 
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]); 
} 

이제이 코드는 모델에 새 개체 (행)를 삽입

- 다음 코드에서, 나는 두 엔티티

PeopleList < 있습니다. 내가 혼동스럽게 여기는 것은 : 1. 두 개체 (PeopleList 및 TransactionDetails)에 관련된 개체 값에 대한 코드를 작성해야하지 않습니까? 2.이 코드를 반복해서 실행하면 첫 번째 엔터티 (PeopleList)에 동일한 개체가 계속 추가됩니다. To-Many 관계 작성법 지난 몇 시간 동안 읽었을 때 얻을 수있는 것은 결과를 가져 와서 해당 특정 개체를 검색해야만하는 경우 동일한 이름의 새 개체를 삽입하지 않아도된다는 것입니다. 그러나이 경우 두 기업을 어떻게 관련시킬 것인가.

답변

0

다 대다 관계에 관한 한 모델 엔티티가 모델 편집기에 올바르게 연결되어 있습니까? 엔티티에 대한 클래스 파일을 생성 했습니까? '예'로 두 질문에 모두 답변 할 수 있다면, 당신도 마찬가지로 개인 목록 엔티티를 작성하고 세부 엔티티도 작성하지만 개인 목록에 세부 사항이 필요합니다. 메서드 이름에 대한 클래스 파일을 살펴보십시오.

0

두 개체 중 하나에 관계를 설정하지 않으므로 그렇지 않습니다. 새로 작성한 TransactionDetail 객체의 PeopleList 속성을 설정하는 위치가 표시되지 않습니다 (미안하지만, 모델에 이름이 지정된 속성이 어떻게 생겼는지 모르므로 클래스 이름 만 사용하고 있습니다). 따라서 transactionDetails 객체를 생성 한 후에는 transactionDetails.PeopleList = personDetails와 같은 작업을 수행해야하며 두 지점 모두 관계가 설정됩니다. transactionDetails.PeopleList 속성은 personDetails 객체를 가리키고, personDetails.TransactionDetails 세트는 transactionDetails를 포함합니다.

이름을 설정하는 데 사용하는 사람 개체는 무엇입니까?

또 다른 참고로, NSManagedObject의 하위 클래스로 이러한 모든 종류의 항목을 이동하는 것이 좋습니다. 각 엔티티에 대해 자신 만의 쉬운 생성자/초기화 프로그램 등을 작성하십시오. 많은 사람들이 이것을 절대하지 않고 CoreData 보일러 플레이트가 많은 컨트롤러 코드를 쓰레기통에 버리는 결과를 낳았습니다. CoreData 보일러 플레이트는 내게 미스테리입니다.

관련 문제