ios - NSDictionary 不符合键测试的键值编码

标签 ios objective-c nsstring nsdictionary

我正在尝试使用 NSDictionary以一种我可以存储的方式 NSArrays在里面,但我什至不能让它为字符串工作。

_times = [[NSDictionary alloc] init];
NSString *test = @"Test";
[_times setValue:@"testing" forKey:test];
NSLog(@"%@",[_times objectForKey:test]);

对于上面的代码,我收到错误消息
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSDictionaryI 0x8b86540> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key Test.'

为什么 NSString *不能作为 key ?事实上,这正是该方法所需要的。

最佳答案

NSDictionary 是不可变的,因此您无法为其设置值。
使用 NSMutableDictionary

NSMutableDictionary *times = [[NSMutableDictionary alloc] init];

我在这里包括@Martin 的评论

此外:使用setObject:forKey 设置字典值。 setValue:forKey 仅在"Key-Value Coding"magic 时需要。 setObject:forKey 如果应用于不可变字典,也会给出更好的错误消息。

关于ios - NSDictionary 不符合键测试的键值编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994546/

相关文章:

ios - 在 iOS 中与复杂的图形交互

iphone - 如何删除 NSMutableString 的末尾?

objective-c - 求计算器中根底的幂

objective-c - 我应该如何正确释放这个 NSString ?

objective-c - 在常量和非常量字符串之间交替时 NSString 的最佳分配

iphone - CLLocationManager 地理编码地址字符串 :inRegion not working to constrain region (ios5)

ios - CCLabelTTF contentSize 在 iOS 6 和 iOS 7 中不同 - cocos2d-x

ios - 如何安全地解包我从 Firebase 中的数据库调用的这个可选 URL?

objective-c - NSImageView 根据图像大小调整大小

ios - 在 Controller 之间传递难度级别