如何检查nsdictionary中的字符串是否为null

时间:2013-08-19 20:11:45

标签: iphone ios twitter 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>

1 个答案:

答案 0 :(得分:0)

为什么要检查@“place.name”的值,然后使用@“place.full_name”?也许这就是问题所在。

我认为在使用它之前你必须检查@“geo.coordinates”值。

尝试将if语句更改为if(str && str.lengh)

并更改NSString *str = [dic valueForKeyPath:@"place.name"];NSString *str = [[dic valueForKeyPath:@"place.name"] lastObject];,因为valueForKeyPath返回一个数组。