如何查看使用valueForKey创建的NSArray是否为空

时间:2014-05-19 08:40:38

标签: ios objective-c if-statement nsarray

我有一个阵列:

NSArray *itemsArray = [self.tournamentDetails.groups valueForKey:@"Items"];

其中self.tournamentDetails.groups是一个NSArray,使用来自webRequest的JSON字符串进行构建。

项目有时是空的,有时它包含对象。所以我需要一个if语句来检查它是否为空。我尝试了一些不同的东西,如:

if ([itemsArray count]!=0)
if (!itemsArray || !itemsArray.count)

问题是如果我从valueForKey的Items对象为空,那么itemsArray仍然包含一个看起来像这样的对象

<__NSArrayI 0x178abef0>(
<__NSArrayI 0x16618c30>(

)

)

当我的Items对象中的theres项看起来像这样:

<__NSArrayI 0x18262b70>(
<__NSCFArray 0x181e3a40>(
{
    BirthDate = 19601006T000000;
    ClubName = "Silkeborg Ry Golfklub";
    ClubShortName = "";
    CompletedResultSum =     {
        Actual =         {
            Text = 36;
            Value = 36;
        };
        ToPar =         {
            Text = "";
            Value = 0;
        };
    };
}
)
)

意味着[itemsArray count]总是等于1或更多,然后在不应该跳转到if语句时。

任何人都知道如何创建一个if语句,如果itemsArray包含“Items:[]”,它将被跳过,如果itemsArray包含“Items:[很多对象]”,它将会运行?

编辑:解决方法是检查第一个索引if([[itemsArray objectAtIndex:0] count]!= 0)然后运行代码。

2 个答案:

答案 0 :(得分:1)

试试这个:

if(itemsArray && itemsArray.count>0) //be sure that it has value){
   for(NSArray *item in itemsArray){
       if(item.count > 0){
           // you have an NSDictionary. Will process it 
       }else{
           //item.count == 0 : this is an empty NSArray.
       }
   }
}

答案 1 :(得分:0)

更简单

  for (id obj in itemsArray)
  {
      if([obj isKindOfClass:[NSArray class]])
      {
          if(obj.count > 0)
          {
             //your if condition here 
          }
      }
  }