使用UIView标记作为NSMutableDictionary的键

时间:2012-06-07 19:48:28

标签: objective-c uiview nsdictionary

我想使用UIView标记作为NSMutableDictionary的键。但是,编译器使用NSInteger作为键对象。我想做以下事情:

NSInteger elementKey = _viewBeingDragged.tag;
myClass* element = [_model.elements objectForKey:elementKey];

如何使用elementKey作为我的字典键?

5 个答案:

答案 0 :(得分:2)

NSInteger不是对象,不能用作密钥。您可以将其换成NSNumber代替:

NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];

答案 1 :(得分:0)

NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];

答案 2 :(得分:0)

我同意@Mario和@EvanMulawski,但我更喜欢使用字符串作为我的密钥。哦,至于编译器拒绝使用NSInteger的原因是NSIntegerlong int s几乎相同。

NSString* elementKey = [NSString stringWithFormat:@"%i",_viewBeingDragged.tag];
//or NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];

答案 3 :(得分:0)

将其包裹在NSNumber字面值中。

myClass* element = _model.elements[@(_viewBeingDragged.tag)];

并分配:

NSInteger tag = view.tag;
myClass *value;
_model.elements[@(tag)] = value;

答案 4 :(得分:-3)

而是为密钥创建一个NSString,尽管您可以使用任何NSCopying一致对象:

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