2010-03-26 2 views
2

프로그래밍 방식으로 관계에 일대일로 액세스하려고합니다. 내 데이터 모델에는 WordCategory (일대 다)라는 엔터티에 대한 관계가있는 이라는 언어 (두 개의 문자열 특성 포함)라는 NSManagedEntity가 포함되어 있습니다. NSFetchRequest를 사용하여 모든 언어 엔티티를 가져옵니다. 그건 잘 작동합니다. 관계에 대한 valueForKey를 얻었습니다. 나는 그 물건으로 일할 수있다. 나는 NSSet에 메시지 수를 보내려고 할 때 그러나, WordCategory 객체 내가 말해에서코어 데이터 : 관계에 액세스 할 때 NSSet의 계산 방법이 실패합니다

을 얻을 저장하는,이 라인은 작동합니다

 NSLog(@"word category count %@",[[wordCategory anyObject] valueForKey:@"name"]); 

이 사람은하지 않습니다 :

NSLog(@"word category count %@",[wordCategory count] 

디버거에서 EXC_BAD_ACCESS 메시지가 나타납니다.

NSManagedObjectContext *moc = [myAppDelegate managedObjectContext]; 
NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Language" inManagedObjectContext:moc]]; 

NSError *error = nil; 
NSArray *results = [moc executeFetchRequest:request error: &error]; 
if (error) { 
    [NSApp presentError:error]; 
    return; 
} 

NSManagedObject *obj = [results objectAtIndex:0]; 
NSSet *wordCategory = [obj valueForKey:@"category"]; 
NSLog(@"word category count %@",[wordCategory count]); 

나는 사람이 신비에 흘릴 수있는 것보다 어떤 빛을 감사 할 것 :

여기에 코드의 나머지 부분입니다. 당신의 도움을 주셔서 감사합니다!

답변

5
  • (NSUInteger)

메소드의 리턴 타입 NSSet 의지 카운트 NSUInteger이다. 따라서 % @를 사용하여이 유형을 참조하려고하면 디버거에 EXC_BAD_ACCESS라는 메시지가 표시됩니다. 예상치 못한 유형의 값에 액세스하고 있습니다.

대신 % d을 사용해보세요.

NSLog (@ "단어 카테고리 수 % d", [wordCategory 수]);

는 (정확한 대답 - 더 주석) bobDevil의 코멘트 후 편집 :

NSLog (@ "단어 카테고리 카운트 % 루", [wordCategory 카운트]);

모두 최고입니다.

+0

NSUInteger이므로 실제로 % lu를 사용해야합니다. 아래의 "플랫폼 종속성"을 참조하십시오. http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Strings/Articles/formatSpecifiers.html – bobDevil

+0

정보를 제공해 주셔서 감사합니다. 당신 말이 맞아요. 모든 사람이 쉽게 읽을 수 있도록 게시물을 업데이트합니다. –

+0

감사합니다! 누가 그 대답을 그렇게 단순하고 분명하다고 생각 했을까? – theprole

관련 문제