2013-08-19 2 views
1

트위터 앱에서 작업 중이며 트윗 위치를 구현하려고합니다. 내가 원하는 것은 국가의 이름을 표시하고 트윗에 위치가있는 경우지도에 표시하는 것입니다. 하지만 내가 시도한 것은 항상 첫 번째 트윗의 국가를 표시하거나 null 인 경우 앱이 다운됩니다. 나는 내가 뭘 잘못하고 있는지 이해하지 못한다. 누구든지 도와 줄 수 있습니까? 고맙습니다! 다음은 내 코드입니다 :nsdictionary의 문자열이 null인지 확인하는 방법

// LOCATION 
    for (NSDictionary *dic in self.dataSource) 
    { 
     NSString *str = [dic valueForKeyPath:@"place.name"]; 
     if(str) 
     { 
      cell.button.hidden = NO; 
      cell.location.text = [dic valueForKeyPath:@"place.full_name"]; 
      self.coordinates = [dic valueForKeyPath:@"geo.coordinates"]; 
      break; 
     } else { 
      cell.button.hidden = YES; 
      cell.location.hidden = YES; 
      break; 
     } 

    } 

그리고 이것은 NSLog 출력입니다 :

2013-08-20 00:04:42.269 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.269 TwitterApplication[10011:c07] Downtown 
    2013-08-20 00:04:42.269 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.270 TwitterApplication[10011:c07] Moscow 
    2013-08-20 00:04:42.270 TwitterApplication[10011:c07] Брянск 
    2013-08-20 00:04:42.270 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.271 TwitterApplication[10011:c07] Брянск 
    2013-08-20 00:04:42.271 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.271 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.272 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.272 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.272 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.273 TwitterApplication[10011:c07] <null> 
    2013-08-20 00:04:42.273 TwitterApplication[10011:c07] <null> 
+0

해당 로그를 생성하는 코드는 무엇입니까? – Wain

+0

트윗에 위치가있는 경우 도시 이름,없는 경우 null입니다. – Blaze

+0

코드를 표시하고 표시된 코드와의 관계를 표시하십시오. – Wain

답변

0

왜 당신의 가치를 확인합니까 @ "place.name"다음 사용 @ "place.full_name"? 어쩌면 이것이 문제 일 수 있습니다.

및 @ "geo.coordinates"값을 사용하기 전에 확인해야한다고 생각합니다.

문 경우 if(str && str.lengh)

로 변경하고 valueForKeyPath 배열을 반환하기 때문에 NSString *str = [[dic valueForKeyPath:@"place.name"] lastObject];NSString *str = [dic valueForKeyPath:@"place.name"]; 을 변경하려고합니다.

+0

불행히도, 나는 문제가 if와 관련이 있다고 생각하지만 확실하지 않습니다. – Blaze

+0

@Blaze하지만 한 값을 확인하고 다른 값을 사용하는 것은 무엇입니까? –

+0

실수 였어. 나는 "place.name"으로 바뀐다. – Blaze

관련 문제