2016-06-06 2 views
-1

나는 iOS 개발에있어서 매우 익숙하다. 레이블에서 NSArray의 값을 표시하고 싶지 않은 문제를 발견했다. 제발 누군가가 왜 그것이 잘못되었는지 지적 할 수 있습니까? 나는이 코드를 실행하면 내가 얻고 무엇레이블에 대한 setText - 목표 C Xcode 7

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 

    json_data = [json objectForKey:@"data"]; 

    content = [json_data objectForKey:@"content"]; 

    NSMutableArray *contentTemp = [[NSMutableArray alloc] initWithCapacity:content.count]; 

    for (NSDictionary *contentInfo in content) { 

     project_details *mvm = [[project_details alloc] init]; 
     mvm.bname = contentInfo[@"bname"]; 
     mvm.burl = contentInfo[@"burl"]; 
     mvm.p_num = contentInfo[@"p_id"]; 
     mvm.pname = contentInfo[@"pname"]; 
     mvm.pdesc = contentInfo[@"pdesc"]; 
     mvm.purl = contentInfo[@"purl"]; 
     mvm.plive = contentInfo[@"plive"]; 
     mvm.pcompleted = contentInfo[@"pcompleted"]; 
     mvm.days = contentInfo[@"days"]; 
     mvm.pfunds = contentInfo[@"pfunds"]; 
     mvm.amount = contentInfo[@"amount"]; 
     mvm.perc = contentInfo[@"perc"]; 

     [contentTemp addObject:mvm]; 

    } 

    self.projectArray = contentTemp; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.label setText:[NSString stringWithFormat:@"%@", [self.projectArray valueForKey:@"bname"]]]; 

      NSLog(@"%@", [self.projectArray valueForKey:@"bname"]); 
    }); 


}]; 

[dataTaskProject resume]; 

는 : NSLog 레이블에 대한 올바른 값 만의 setText 메소드 인쇄 "("인쇄

이 그대로 내가 URL을 넣지 않은 코드입니다. 코드를 실행 때에 오류가 없습니다

projectArray이 같은 .H 파일에 정의되어있다 : @property (비 원자, 복사)있는 NSArray * projectArray,

이 NSLog 인쇄 무엇이다.

2016-06-06 18:28:10.281 #####[37127:1228517] (
"Global Giving") 
+0

올바른 값은 무엇이며 인쇄 된 값은 무엇입니까? NSLOG는 self.label.text를 기록하고 로그 내용을 확인합니다. –

+1

'[self.projectArray valueForKey : @ "bname"]'의 값의 종류는 무엇입니까? 그 NSArray, 그리고 귀하의 레이블을 첫 번째 줄만 보여줄 것 같아요. – Larme

+0

@ "bname"의 올바른 값은 Global Giving입니다. NSLog에서는 "Global Giving", – Alexander

답변

0

NSArray에서 valueForKey을 호출하면 NSArray가 반환됩니다. 당신이 대신 원하는 것은 [(mvm *)self.projectArray.firstObject bname]입니다. self.projectArray에는 하나 이상의 mvm 개체가 포함되어 있으며 그 개체는 bname 속성입니다.

당신은 당신이 (이 코드에서 나에게 분명하지 않다) 배열에 액세스 할 수 원하는 따라 (즉 [1], [2] 등) 배열 인덱스에 .firstObject을 변경할 수 있습니다.

+0

도움을 주셔서 감사합니다. – Alexander