1

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

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

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

4

5 回答 5

2

ANSInteger不是对象,不能用作键。您可以将其包装在 a 中NSNumber

NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];
于 2012-06-07T19:50:34.373 回答
0
NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
于 2012-06-07T19:49:59.880 回答
0

我同意@Mario 和@EvanMulawski,但我更喜欢使用字符串作为我的密钥。哦,至于编译器拒绝使用 an 的原因NSIntegerNSIntegers 几乎等同于long ints。

NSString* elementKey = [NSString stringWithFormat:@"%i",_viewBeingDragged.tag];
//or NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];
于 2012-06-07T20:50:28.883 回答
0

NSNumber用文字包裹它。

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

和任务:

NSInteger tag = view.tag;
myClass *value;
_model.elements[@(tag)] = value;
于 2016-12-06T11:23:47.533 回答
-3

而是为键创建一个 NSString,尽管您可以使用任何 NSCopying 符合对象:

NSString *key = [NSString stringWithFormat: @"%d",elementKey];
于 2012-06-07T20:43:27.107 回答