我想使用 UIView 标记作为 NSMutableDictionary 的键。但是,编译器反对我使用 NSInteger 作为键。我想做以下事情:
NSInteger elementKey = _viewBeingDragged.tag;
myClass* element = [_model.elements objectForKey:elementKey];
如何使用 elementKey 作为我的字典键?
我想使用 UIView 标记作为 NSMutableDictionary 的键。但是,编译器反对我使用 NSInteger 作为键。我想做以下事情:
NSInteger elementKey = _viewBeingDragged.tag;
myClass* element = [_model.elements objectForKey:elementKey];
如何使用 elementKey 作为我的字典键?
ANSInteger
不是对象,不能用作键。您可以将其包装在 a 中NSNumber
:
NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];
NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
我同意@Mario 和@EvanMulawski,但我更喜欢使用字符串作为我的密钥。哦,至于编译器拒绝使用 an 的原因NSInteger
是NSInteger
s 几乎等同于long int
s。
NSString* elementKey = [NSString stringWithFormat:@"%i",_viewBeingDragged.tag];
//or NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];
NSNumber
用文字包裹它。
myClass* element = _model.elements[@(_viewBeingDragged.tag)];
和任务:
NSInteger tag = view.tag;
myClass *value;
_model.elements[@(tag)] = value;
而是为键创建一个 NSString,尽管您可以使用任何 NSCopying 符合对象:
NSString *key = [NSString stringWithFormat: @"%d",elementKey];