2014-01-09 2 views
0

으로 가져 오는 것은 사실 iPhone 프로그래밍을 처음 사용하고 앱을 성공적으로 만들었지 만 NSSet에 저장된 값을 검색하는 방법을 알 수 없습니다. 서로 관련된 핵심 데이터에는 2 개의 엔티티가 있습니다. 사용자가 일대 다 점수를 얻습니다. Users 엔티티에는 firsNname 및 lastName 속성이 있으며 Scores 엔티티에는 onTime, wasAbsent 및 dateIn 속성이 있습니다. firstName과 lastName을 기반으로하는 술어를 사용하여 가져온 다음 가져 오기를 실행합니다. 가져 오기가 성공적이며 하나의 가져 오기 호출에서 두 엔티티를 모두 가져올 수 있습니다. 그러나 점수 엔터티에서 값에 대한 값을 가져올 수 없습니다. 내가하는 일은 언제나 NSSet 객체를 반환합니다. 내가하고 싶은 것은 onTime 및 wasAbsent 속성에 저장된 부울 값을 검색하여 UISwitch에 공급하는 것입니다. 내가 대신 직접 NSSet을 사용하는 점수 개체에 액세스 할 수 있는지코어 데이터에서 많은 값을 얻어서 저장된 값을

AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
self.managedObject = delegate.managedObjectContext; 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Student"]; 
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"firstname == %@ AND lastname == %@", @"James", @"Smith"]; 

NSError *error = nil; 
self.scoresArray = [self.managedObject executeFetchRequest:fetchRequest error:&error]; 

if ([self.scoresArray count]) { 

    Student *student = [self.scoresArray objectAtIndex:0]; 
    NSSet *score = student.scores; 
    NSArray *arr = [score allObjects]; 
    NSLog(@"%@", [arr objectAtIndex:0]); 
} 

, 즉 나는 점 표기법을 사용하여 참조 할 수 방법이 이상적 일 것이다. 도움이 될 것입니다. 다음과 같은 감사

답변

0

사용 무언가 : 학생 일대 점수의 관계 (그리고 scores이다의 속성)을 가지고 있기 때문에 당신이 student.scores의 값을 얻을 때

AppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
self.managedObjectContext = delegate.managedObjectContext; 

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Student"]; 
    fetchRequest.predicate = [NSPredicate predicateWithFormat:@"firstname == %@ AND lastname == %@", @"James", @"Smith"]; 

NSError *error = nil; 
NSArray *studentArray = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

for (Student *student in studentArray) { 

    Student *student = [self.studentArray objectAtIndex:0]; 

    NSLog(@" student is %@ %@", student.firstname, student.lastname); 

    for (Score *score in student.scores) { 
     // Do something with score 
     NSLog(@" score is %@", score); 
    } 
} 
+0

도움 주셔서 감사합니다. 점수 값을 가져올 수 있습니다. 그러나, 내 문제는 값을 검색 할 때 NSSet 데이터 형식에서 검색되는 및 부울 형식을 얻는 것입니다. –

+0

당신의 기술은 효과가 있었고 현재 작동 중입니다. 부울에서도 값을 검색 할 수 있습니다. 도와 주셔서 대단히 감사합니다 –

+0

@EdwardB. 효과가 있었다면 틱을 클릭하여 답을 수락해야합니다. –

0

,이 정렬되지 않은 컬렉션을 반환 , NSSet은 Foundation입니다. 그래서 당신은 NSSet으로 작업하고 일반적으로 콜렉션과 같이 작업 할 수 있습니다.

+0

도와 주셔서 감사합니다. 점수 값을 검색 할 수 있습니다. 그러나, 내 문제는 값을 검색 할 때 해당 데이터 형식을 NSSet 및 부울 형식을 얻는 것입니다. –

+0

부울 컬렉션이 필요합니까? 당신은 사용자와 점수의 관계가 대다 관계라는 것을 썼습니다. – eofster

+0

관계는 to-many이며 엔티티 중 부울을 허용하는 속성을 가진 엔터티가 거의 없습니다. 나는 그 부울 값을 저장했지만 부울 값으로 되돌릴 수는 없었습니다. 나는 사실 Ducan의 도움을 받아야했다. Ducan이 제시 한 접근법과 다른 접근법을 가지고 있다면, 나는 그것을보고 싶을 것입니다. 당신의 도움을 주셔서 감사합니다. –

관련 문제