我有以下代码:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[defs setObject:[NSNumber numberWithInt:100] forKey:@"test1.test2.test3"];
[defs setValue:[NSNumber numberWithInt:10] forKeyPath:@"test2.test3.test4"];
我明白那个setObject:forKey:
创建“test1.test2.test3”键和给定数字对象之间的关联。另一方面,setValue:forKeyPath:
是键值编码方法,尝试定位路径“test2.test3.test4”的对象,但最终,它只是默默地什么也不做。它甚至不修改字典!
让我非常困惑的是setValue:forKeyPath:
不会引发任何异常,也不报告任何错误。为什么是这样?此行为是否记录在任何地方?
抱歉,我找不到此特定案例的任何文档,但我的猜测是:
[defs setValue:x forKeyPath:@"a.b.c"];
正在实施这样的事情:
[[defs objectForKey:@"a"] setValue:x forKeyPath:@"b.c"];
So objectForKey:
回报nil
,以及调用的方法nil
什么都不做。这可以解释您所描述的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)