2

坦率地说,这是一个相当详细的问题。NSMutableDictionary 的苹果文档https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/Reference/Reference.html状态:

setObject:forKey:
Adds a given key-value pair to the dictionary.
- (void)setObject:(id)anObject forKey:(id)aKey

根据该参数forKey接受任何对象。但是,当我尝试传递 NSNumber Incompatible pointer types sending 'NSNumber *' to parameter of type 'NSString *' Aparently 时,仅接受一些 NSString 作为键。

暂时我会将我的号码转换为字符串。最后,它只是一把钥匙。但是有人知道谁是对的吗?文档还是编译器?

4

3 回答 3

11

使用时不应收到该警告setObject:forKey:。但是,当使用类似名称setValue:forKey:. 后者虽然名称相似,但它是键值编码系统的一部分,因此只接受 aNSString作为键。

这是一个演示差异的示例程序。

于 2012-10-18T20:39:47.937 回答
3

Apple 的文档是正确的,也许您将该方法setObject forKeysetValue forKey@mipadi 所说的混淆了。

于 2012-10-18T20:41:37.787 回答
0

这工作正常:

 [someMutableDictionary setObject:@"a string" forKey:[NSNumber numberWithInt:1]];

你的代码是什么样的?

于 2012-10-18T20:41:15.927 回答