使用int作为NSDictionary键?

时间:2012-02-12 22:37:17

标签: objective-c ios

我正在尝试访问我的字典对象。这是我的代码:

int tag = object.tag;
CGPoint point = [[self.dict objectForKey:tag] CGPointValue];

问题是objectForKey应该采用Objective-C对象,而不是int。我尝试将标记包装到带有[NSNumber numberWithInt:tag]的NSNumber中,然后将其传递给objectForKey:,但它返回一个空对象。

有什么想法吗?感谢

2 个答案:

答案 0 :(得分:14)

如果您使用数字作为字典键的字符串,则应将int转换为NSStringNSNumber以将其用作字典键。以下是如何为字符串执行此操作:

  NSString *key = [NSString stringWithFormat:@"%d", myInteger];

正如@Hughes BR在评论中提到的那样,关键对象的要求是它必须符合NSCopying协议。

答案 1 :(得分:5)

我使用NSNumbers没有问题,但必须避免使用通常的setObject: forKey:setValue: forKey:方法。这会产生警告。

但是,

没有创建警告(代码按预期工作)
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];
NSNumber *key = @1;
id *myObject  = [your code here];
myDict[key]   = myObject;

检索很简单:

myObject = myDict[key];