我有以下代码,但是当我试图使用此密钥从该字典中获取值时,它崩溃了。当我删除@时,它工作得很好。任何想法?使用@作为NSDictionary字符串中的键的一部分
[self.replacementFBMsgDictionary_ setValue:profileItem.fbId forKey:[NSString stringWithFormat:@"@%@", profileItem.username]];
我有以下代码,但是当我试图使用此密钥从该字典中获取值时,它崩溃了。当我删除@时,它工作得很好。任何想法?使用@作为NSDictionary字符串中的键的一部分
[self.replacementFBMsgDictionary_ setValue:profileItem.fbId forKey:[NSString stringWithFormat:@"@%@", profileItem.username]];
的事情是,“@”在关键的开头在键 - 值编码特殊的意义 - 这是用于收集运营商如@count
。因此,KVC密钥不能以该字符串开头。因此,而不是KVC setValue:forKey:
,您将不得不使用NSDictionary的原始setObject:forKey:
。
很好的捕获,这正是我所期待的 – adit 2013-02-28 03:47:47
如果profile.username
是NSString
,你为什么这样做?为什么不把它用于密钥?
[self.replacementFBMsgDictionary_ setValue:profileItem.fbId forKey:profileItem.username];
他正在使用@“@%@”,因为他有@符号作为密钥的第一个字符。 – 2013-02-28 01:31:20
哪个@?你能否更新该行的崩溃版本的问题? – rickerbh 2013-02-28 01:26:21