2011-02-18 5 views
1

그래서 "번호"와 "정보"라는 핵심 데이터의 두 엔티티간에 두 가지 관계가 있습니다. 나는 사용자에게 전화 번호를 알려주고, 내가 그 전화 번호를 알려줌으로써 그들에게 전화를 걸어 특정 번호로 연결할 수 있도록하고 싶습니다. 이렇게 할 수있는 코드를 얻을 수없는 것 같습니다. 지금까지 내가 찍었을 생각하는 가장 가까운이 있습니다 :핵심 데이터 관계 도움말 ... 기본이되어야합니다.

 for (UserNumber *pinNumbers in [entryView pinNumberArray]) { 
      if ([numberString isEqualToString:pinNumbers.PIN]) { 
       UserInfo *info = pinNumbers.info; 
       [info setName:nameField.text]; 
      } 
     } 

어디가 입력 한 번호를 통해 내가 핵심 데이터가 난 후 그들처럼 할당 할 것이다 채우는 배열 내에서 찾을 수 있는지 루프 그들의 이름. 누구든지이 일을 어떻게 할 수 있는지 보여 줄 수 있습니까?

감사합니다. 모델이 같은 경우

+0

그래서 루프를 피하고 Core Data가 UserNumber 인스턴스와 연결된 UserInfo 인스턴스를 반환하도록 하시겠습니까? 그렇다면 가져 오기에서 NSPredicate를 만드는 방법을 살펴보십시오. –

+0

궁극적으로 제 의도는 주어진 이름을 자신의 이름에 연결하는 것입니다. 꽤 많이 두 개의 값과 이름을 포함하는 아주 간단한 행을 만들고 싶습니다. 그러나 나는 그들의 고유 번호에 그들의 이름을 묶는 방법을 모른다. 그 말이 맞는다면. –

답변

1

: UserNumber와 사용자 정보 사이에 일대일 양방향 관계가

enter image description here

있도록, 그때는 아마 당신은 '수'를 가질 수있는 것 같다 수 UserInfo의 속성이며 모델을 단순화합니다. (숫자가 각 UserInfo에 대해 고유 한 경우입니까?)

그러나 현재 모델을 사용하면 일대일 관계로 가정 할 때 UserNumber에 'number' 속성과 UserInfo를 가리키는 'info'라는 일대일 관계가 있습니다.

// Search for UserNumber that has NSString* pinCode as value for attribute PIN 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
[fetchRequest setEntity:[NSEntityDescription entityForName:@"UserNumber" 
         inManagedObjectContext:managedObjectContext]]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"PIN contains[cd] %@", pinCode]; 
[fetchRequest setPredicate:predicate]; 

NSError *error = nil; 
NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
[fetchRequest release]; 

// UserNumber with matching PIN was found, so set name of associated UserInfo. 
if ([items count] == 1) 
    { 
    UserNumber *userNumber = [items lastObject]; 
    UserInfo *userInfo = [userNumber info]; 
    [userInfo setName:nameField.text]; 
    } 

항목에는 0 개 또는 하나의 요소가 있어야합니다. 하나 인 경우 첫 번째 요소는 일치하는 UserNumber입니다. 해당 UserNumber의 '정보'관계를 탐색하면 해당 UserInfo를 얻을 수 있습니다 - 이전에 링크를 제대로 만들었 으면 제공됩니다.

이 코드를 작성에서 업데이트

, 나는 실제로 당신이 ;-) 뭘 하려는지 이해하지 못하는 것을 깨달았다. 이 과정이 등록 절차의 일부입니까? 그렇다면 객체 간 관계가 인 UserInfo 객체 생성을 처리해야합니다. 또는 로그인의 일부입니까? 또는 사용자 정보 편집의 일부입니까? 어쨌든, 이것이 도움이되기를 바랍니다.

+0

나는 이것이 내가 필요한 것이라고 생각한다. 나는 현재 내 코드에 NSPredicate가 없다. 그리고 나는 그 트릭을 기대하고있다. 잠깐 집에 가서 기다려라, 빠른 질문, intValue, 그게 뭐야? –

+0

숫자는 NSNumber 객체로 코어 데이터 (및 다른 곳)에 저장됩니다. NSNumber의 실제 값을 얻으려면 많은 접근 자 (예 : intValue, floatValue, doubleValue 등)를 사용해야합니다. 그 반대의 경우도 마찬가지입니다. 코어 데이터에 숫자를 저장하려면 int 또는 NSInteger 또는 NSUInteger에서 NSNumber를 생성해야합니다. 또는 NSNumber에 대한 클래스 참조 문서를 확인하십시오. – westsider

+0

이것을 사용할 수 있을까요? UserInfo * info = pinNumbers.info; [info setName : nameField.text]; UserNumers 정보 관계를 트래버스하려면? –