我想使用UIView标记作为NSMutableDictionary的键。但是,编译器使用NSInteger作为键对象。我想做以下事情:
NSInteger elementKey = _viewBeingDragged.tag;
myClass* element = [_model.elements objectForKey:elementKey];
如何使用elementKey作为我的字典键?
答案 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
的原因是NSInteger
与long 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];