2011-10-21 2 views
2

CoreData를 처음 접했고 MySQL-DB 배경을 사용하기 때문에 CoreData Moddeling은 이해하기 어렵습니다. 이 기본적인 질문으로 나를 도울 수 있다고 확신합니다.CoreData 기본 대 다 관계 배열 데이터

CoreData modeling

CoreData 모델-descripton는 : 내 데이터베이스 모델은 기본적으로 두 개체로 구성되어 있습니다. 첫 번째는 "관리자", 두 번째는 "우편 번호"라고합니다. "관리자"에는 현재 3 개의 속성이 있으며이 속성은 무시할 수 있습니다. 제 의견으로는 중요한 것은 "우편 번호"라는 관계입니다. "Zipcodes"-Entity에는 zip이라는 속성이 있습니다.이 속성은 16 정수입니다. 그것은 "매니저"라고 불리는 관계를 가지고 있습니다.

아니요. 요점 : 각 관리자는 모든 판매를 담당하는 여러 개의 zicode가 있습니다. 문제는 이제 관리자 엔티티를 설정하고 여러 ziplcode를 연결하려고합니다. 관리자 별 zipcode는 하나의 쉼표로 구분 된 문자열로 구분됩니다. (12345,56789, ...)

먼저 관리자 엔티티를 만듭니다.

Manager *manager = [NSEntityDescription insertNewObjectForEntityForName:@"Manager" inManagedObjectContext:self.managedObjectContext]; 

다음 단계는 모든 zicode를 배열로 분리하는 것입니다.

Manager *manager = [NSEntityDescription insertNewObjectForEntityForName:@"Manager" inManagedObjectContext:self.managedObjectContext]; 

NSArray *zipcodesArray = [[dict objectForKey:@"zipcodes"] componentsSeparatedByString:@","]; 

for (NSString *zip in zipcodesArray) { 
    ??? 
} 

이제는 내가 갇혀있는 지점입니다. 나중에 Zipcode를 searchBar를 통해 확인해야하므로 데이터베이스에서 구분해야합니다. 이제 각 우편 번호에 대해 managedObjectModel을 만들어야합니까? "하나"의 매니저 엔티티를 모두 연결하려면 어떻게해야합니까? 나는 그것을 성취 할 수있는 방법이 있음을 확신하지만 나는 어떻게해야 할지를 정말로 모른다.

제 질문은 이해할 수 있기를 바랍니다. 알고 싶은 것이 있으면 언제든지 물어보십시오.

감사합니다.

답변

3
for (NSString *zip in zipcodesArray) { 
    NSManagedObject* zipcode = [NSEntityDescription insertNewObjectForEntityName:@"Zipcode" 
                inManagedObjectContext:self.managedObjectContext]; 
    [zipcode setValue:zip forKey:@"zip"]; 
    [zipcode setValue:manager forKey:@"manager"]; 
} 

, 코어 데이터는 자동으로 된 우편 번호에 대한 관리자의 관계에 우편 번호를 삽입 처리됩니다.

+0

어쨌든. 나는 항상 매니저와 우편 번호를 일종의 히라이시 (hirachy)라고 생각했다. 그래서 나는 관리자 -> 우편 번호로 연결해야한다고 생각했습니다. 당신의 도움을 주셔서 감사합니다! 정말 감사! 그런데 엔티티 관계를 나중에 업데이트 할 수 있습니까? – rdesign

+1

실제로 "이후"는 없습니다. 우편 번호 관리자 필드를 설정할 때마다 릴레이션 (양방향)이 업데이트됩니다. 그런데 원하는 경우 릴레이션의 다른 쪽 끝을 수정할 수도 있습니다. 이 경우, 당신은'NSMutableSet * zipCodes = [manager mutableSetValueForKey : @ "zipcodes"];'를 실행하기를 원할 것입니다. 그런 다음 변경 가능 세트를 수정하여 관리자와 연관된 우편 번호 세트를 수정할 수 있습니다 (그리고 다시 역관계 우편 번호에서 관리자까지 자동으로 설정됩니다. – edsko

0

Zipcode의 관리되는 개체 인스턴스를 만듭니다. 해당 객체의 zip 속성을 zipcodesArray의 문자열 값으로 설정하십시오. 작업이 끝나면 관리 대상 개체를 데이터 저장소에 저장하고 오류를 확인한 다음 우편 번호 배열 전체를 걸을 때까지 반복합니다. 마지막 줄에 관리자에게 우편 번호의 관계를 구축하여

+0

답장을 보내 주셔서 감사합니다. 하지만 모든 zipcode 관리 객체 인스턴스를 관리자 관리 객체에 어떻게 연결합니까? 나중에 모든 우편 번호를 검색하고 적절한 관리자를 찾을 수 있어야합니다. – rdesign

+0

Edsko가 내 대답과 동일한 코드를 작성한 것처럼 보입니다. 그것 좀보세요. –