2014-01-06 2 views
0

합니다 (coredata 페치에 대한 magicrecord 사용) 다음 코드를 감안할 때 :NSArray를 반환하는 NSArray valueForKey?

// Get all of our apps. 
NSArray * applications = [Application MR_findAllInContext: [NSManagedObjectContext MR_context]]; 

Application * application = [applications firstObject]; 
NSLog(@"Test: %@", application.applicationId); 

NSArray * applicationIds = [applications valueForKey: @"applicationId"]; 
NSLog(@"Application ids: %@", applicationIds); 

나는 다음과 같은 로그를 얻을 :

 
Test: 586001240 
Application ids: (
    "<null>", 
    "<null>" 
) 

나는 applications 배열은 두 개의 항목이 포함되어 있음을 알 수있다. 각각 고유 한 applicationId 속성이 있습니다. valueForKey에 대한 전화가 왜 2 개의 null을 반환하는지 이해할 수 없습니까? 대신 두 개의 NSNumber 객체를 가져야합니다.

최근 valueForKey (이전에는 고유 항목을 얻으려고 열거 형을 사용하고 항목을 배열에 추가)에 대해 알아 냈습니다. 가독성을 높이기 위해 valueForKey를 사용하려고합니다. 분명히 나는 ​​무언가를 정확하게 이해하지 못하고있다. 내가 어디로 잘못 가고 있는지에 대한 조언?

편집 - 자세한 내용은 :

Application 클래스는 핵심 데이터 모델을 통해 생성됩니다. 인터페이스는 다음과 같이 정의됩니다.

@interface Application : NSManagedObject 

@property (nonatomic, retain) NSNumber * applicationId; 
@property (nonatomic, retain) NSString * name; 

@end 
+0

'NSDictionary'를 사용하고 싶습니까? 나는 또한 valueForKey : 메소드가 KVO에 속하고 그것을 사용하는 것처럼 사용할 수 없다고 생각한다. – chris13

+1

'Application'과 같은 인터페이스는 무엇입니까? 핵심 가치 준수입니까? – WDUK

+1

코드가 멋지 기 때문에 Application.applicationId 속성의 구현과 선언을 확인해야합니다. 단지 표준 코어 데이터 속성이라면 오류가 발생할 수 있습니다. – jrturton

답변

0

내 생각에는 매우 멍청한 문제입니다.

내가 변경했다 :

[Application MR_findAllInContext: [NSManagedObjectContext MR_context]];

가 될하려면이 문제를 해결

[Application MR_findAllInContext: [NSManagedObjectContext MR_defaultContext]];

.

+1

다른 사람들은 ('MR_defaultContext'가 당신 자신의 방법이기 때문에),'Application * application = [applications firstObject]; '가 효과가 있다는 것을 고려할 때 문제의 근본 원인은 무엇입니까? – WDUK