作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含四个对象的NSDictionary
。每个对象都是一个包含数千个对象的 NSDictionary。我已经通过记录顶级字典的描述来验证它包含它应该包含的内容。但是,当我运行下面的代码以枚举该顶级字典中的对象时,调试器显示错误,表明返回的对象是字符串而不是字典。
这是代码:
for(id synsetsForPos in dictionaryOfSynsetDictionaries) {
NSLog(@"synsetsForPos is class of %@ with description %@", [synsetsForPos class], [synsetsForPos description]);
(我最初将 synsetsForPos
输入为 NSDictionary
,但此处描述的结果是相同的。)
在调试器中,我在日志语句处停止以在控制台中获取此内容:
(lldb) po [synsetsForPos class]
(id) $2 = 0x016e2c8c __NSCFConstantString
(lldb) po [[dictionaryOfSynsetDictionaries objectForKey:@"n"] class]
(id) $3 = 0x016d3e0c __NSCFDictionary
(lldb) po [[dictionaryOfSynsetDictionaries objectForKey:@"r"] class]
(id) $6 = 0x016d3e0c __NSCFDictionary
(lldb) po [[dictionaryOfSynsetDictionaries objectForKey:@"v"] class]
(id) $7 = 0x016d3e0c __NSCFDictionary
(lldb) po [[dictionaryOfSynsetDictionaries objectForKey:@"a"] class]
(id) $8 = 0x016d3e0c __NSCFDictionary
(lldb) po [dictionaryOfSynsetDictionaries allKeys]
(id) $10 = 0x653662a0 <__NSArrayI 0x653662a0>(
r,
n,
v,
a
)
然后,让日志语句执行,我得到:
2012-11-24 22:32:41.069 [6037:fb03] synsetsForPos is class of __NSCFConstantString with description r
(lldb)
后跟此错误消息:
2012-11-24 22:41:21.287 [6037:fb03] -[__NSCFConstantString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x1faf8
我不明白这里发生了什么,为什么在快速枚举代码中没有将其视为字典。
最佳答案
字典的快速枚举迭代键而不是对象:documentation .
使用enumerateKeysAndObjectsUsingBlock:
相反。它可能同样快 - 请参阅讨论 here .
关于cocoa - 使用 NSDictionary 保存 NSDictionary 对象进行快速枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548969/
我是一名优秀的程序员,十分优秀!