NSDictionary长度计数错误

时间:2012-02-01 17:39:23

标签: ios nsdictionary

{
    Items = {
        Item = {
            text = "item 1";
        }
        Item = {
            text = "item 2";
        }
        Item = {
            text = "item 3";
        }
    }
}

以上是我的NSDictionary的一个例子。请记住下一个片段。

NSDictionary *dict = {the afore mentioned dictionary is here}
int count = [[[dict objectForKey:@"Items"] allKeys] count]; // Breakpoint here
NSLog(@"%i", count); // Breakpoint here

在我的断点中,我得到count

的以下值
  • 关于断点1:count = (int) 128037184(或其他一些随机和大的int)
  • 断点2:count = (int) 5

我原本期望两次都是3。发生了什么事?

2 个答案:

答案 0 :(得分:11)

在第一种情况下,你在执行该行之前就已经断开了,所以count将会有任何随机数据发生在堆栈上的那个位置。如果您在调试器中跳过该指令,您会看到count更改为更合理的数字。

在第二种情况下,我不确定为什么你有比你想象的更多的键,但简单的做法是只记录整个字典,看看有什么:

NSLog(@"%@", dict);

这将显示字典中的所有键和值,这可以解释您获得的数字。

答案 1 :(得分:5)

我使用[dict count]来计算NSDictionary中的对象数。