2015-11-06 97 views
0

我正在从一台服务器获取数据的应用程序。我将这些数据转换为XML,然后使用XMLDictionary解析它。我的问题是计算字典中的对象数量。使用NSDictionary解析JSON

"finance_fee_collection" =  (
      { 
     amount = "790.00"; 
     "due_date" = "2015-06-04"; 
     name = "Third Payment"; 
    }, 
      { 
     amount = "790.00"; 
     "due_date" = "2014-12-11"; 
     name = "First Payment"; 
    }, 
      { 
     amount = "740.00"; 
     "due_date" = "2015-07-06"; 
     name = "third payment"; 
    } 
); 

计算上述数量的对象得出3,这是正确的。但是计数以下也导致3

"finance_fee_collection" =  { 
    amount = "740.00"; 
    "due_date" = "2015-07-06"; 
    name = "third payment"; 
}; 

我想是计算“finance_fee_collection”项目,使得第一个结果3,第二个结果1.反正我有可以接近这个数目标?

+3

使用相同的结构,对于两种情况。第一个例子中有一个数组,而第二个例子中没有数组。为什么? – rmaddy

+0

这就是问题所在,我不知道为什么。我使用XMLDictionary将XML解析为NSDictionary。 – Hussein

回答

0

第一个似乎是一个数组,第二词典:

if([finance_fee_collection iskindOfClass:[NSDictionary class]]){ 
    count = 1; 
} else { 
    count = result.count; 
} 

相似,这应该工作的东西。 :)希望它是有帮助的。

+0

我只是试了一下,一切都很完美。谢谢alooot :) – Hussein

+0

只想再次感谢你,拯救了我的生命:D现在一切正常。谢谢 – Hussein

0

这没有任何意义真的,因为这两个NSArrayNSDictionary实施count方法,应该两种结构返回3:

id obj = @[@1 ,@2, @3]; // This is an NSArray 

NSLog(@"%lu", (unsigned long)[obj count]); // Outputs 3 

obj = @{ @1:@1, 
     @2:@2, 
     @3:@3 
     }; // now it's an NSDictionary 

NSLog(@"%lu", (unsigned long)[obj count]); // Outputs 3 

是你使用[object count]得到计数?

无论哪种方式,我不认为计数将在1仅仅是因为数据结构是一本字典(你不指望它)

+0

我的目的是计算对象的数量,如果它是一个NSArray,并且只返回1,如果它是一个NSDictionary。所以mt81的答案是我想要的。谢谢 – Hussein

+1

(为了说明,在你的字典中调用'count'返回1并且在你的数组上调用'count'返回3)我很高兴它为你解决了这个问题,但是我们需要在网站上为将来的用户。返回1不是一个称为“在NSDictionary中计数对象”的问题的答案;这是我贡献的原因(这不是针对任何人的个人挖掘) – davbryn