{
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
count = (int) 128037184
(或其他一些随机和大的int)count = (int) 5
我原本期望两次都是3。发生了什么事?
答案 0 :(得分:11)
在第一种情况下,你在执行该行之前就已经断开了,所以count
将会有任何随机数据发生在堆栈上的那个位置。如果您在调试器中跳过该指令,您会看到count
更改为更合理的数字。
在第二种情况下,我不确定为什么你有比你想象的更多的键,但简单的做法是只记录整个字典,看看有什么:
NSLog(@"%@", dict);
这将显示字典中的所有键和值,这可以解释您获得的数字。
答案 1 :(得分:5)
我使用[dict count]来计算NSDictionary中的对象数。