我正在尝试访问我的字典对象。这是我的代码:
int tag = object.tag;
CGPoint point = [[self.dict objectForKey:tag] CGPointValue];
问题是objectForKey应该采用Objective-C对象,而不是int。我尝试将标记包装到带有[NSNumber numberWithInt:tag]
的NSNumber中,然后将其传递给objectForKey:
,但它返回一个空对象。
有什么想法吗?感谢
答案 0 :(得分:14)
如果您使用数字作为字典键的字符串,则应将int
转换为NSString
或NSNumber
以将其用作字典键。以下是如何为字符串执行此操作:
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];