1

NSMutableDictionaryのキーとしてUIViewタグを使用したいと思います。ただし、コンパイラはNSIntegerをキーとして使用することに反対します。私は次のことをしたい:

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

elementKeyを辞書キーとして使用するにはどうすればよいですか?

4

5 に答える 5

2

ANSIntegerはオブジェクトではないため、キーとして使用することはできません。代わりにそれをラップすることができますNSNumber

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

@Marioと@EvanMulawskiの両方に同意しますが、キーに文字列を使用することを好みます。ああ、そしてコンパイラがanの使用を拒否する理由NSIntegerは、NSIntegersがsとほとんど同じであるということlong intです。

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* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
于 2012-06-07T19:49:59.880 に答える
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

NSCopying準拠オブジェクトを使用できますが、キーのNSStringを作成します。

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