2012-09-06 1 views
0
NSDictionary* json = [NSJSONSerialization 
         JSONObjectWithData:responseData 

         options:kNilOptions 
         error:&error]; 
NSArray* users = [json objectForKey:@"Users"]; 
NSEnumerator* enumerator = [users objectEnumerator]; 
id element; 
NSMutableArray *results; 
Result *fetchedResults; 
while(element = [enumerator nextObject]) { 

    // fetchedResults = [[Result alloc] init]; // i have tried commenting/uncommenting 
    fetchedResults.name = (NSString *)[[element objectForKey:@"User"] objectForKey:@"name"]; 
    fetchedResults.email = (NSString *)[[element objectForKey:@"User"] objectForKey:@"name"]; 
    NSLog(@"%@", fetchedResults.name); 
    [results addObject:fetchedResults]; 

    NSLog(@"%@", (NSString *)[[element objectForKey:@"User"] objectForKey:@"name"]); // this returns valid dump 

} 
NSLog(@"%d", [results count]); // returns 0 

여기에 잘못된 것이 있습니다. 수많은 자습서와 자료를 통해 검색 한 결과, 여기에 잘못된 정보가없는 것으로 보입니다.NSMutableArray에 사용자 지정 NSObject를 복사하는 방법

편집 : 당신은 당신의 결과 배열 NSMutableArray *results = [[NSMutableArray alloc] init]을 할당하는 것을 잊었다

NSLog(@"%@", fetchedResults.name); // dumps null 

답변

1

이 도움이 될 것입니다.

NSDictionary* json = [NSJSONSerialization 
        JSONObjectWithData:responseData 
        options:kNilOptions 
        error:&error]; 
NSArray* users = [json objectForKey:@"Users"]; 
NSMutableArray *results = [[NSMutableArray alloc] init]; 

for (id object in users) { 
    Result *fetchedResults = [[Result alloc] init]; 
    fetchedResults.name = (NSString *)[[element objectForKey:@"User"] objectForKey:@"name"]; 
    fetchedResults.email = (NSString *)[[element objectForKey:@"User"] objectForKey:@"name"]; 
    NSLog(@"%@", fetchedResults.name); 
    [results addObject:fetchedResults]; 
} 



NSLog(@"%@", (NSString *)[[element objectForKey:@"User"] objectForKey:@"name"]); 
} 

NSLog(@"%d", [results count]); // returns 0 
+0

"id 요소"아래에 NSMutableArray * 결과가 있습니다. 그럴 수 없어? –

+0

위에서 입력 한대로 alloc 및 init을 코드에 추가하기 만하면됩니다. – btype

+0

앱이 다운됩니다. 도움이된다면 ARC를 활성화했습니다. –