NSMutableDictionaryのキーとしてUIViewタグを使用したいと思います。ただし、コンパイラはNSIntegerをキーとして使用することに反対します。私は次のことをしたい:
NSInteger elementKey = _viewBeingDragged.tag;
myClass* element = [_model.elements objectForKey:elementKey];
elementKeyを辞書キーとして使用するにはどうすればよいですか?
NSMutableDictionaryのキーとしてUIViewタグを使用したいと思います。ただし、コンパイラはNSIntegerをキーとして使用することに反対します。私は次のことをしたい:
NSInteger elementKey = _viewBeingDragged.tag;
myClass* element = [_model.elements objectForKey:elementKey];
elementKeyを辞書キーとして使用するにはどうすればよいですか?
ANSInteger
はオブジェクトではないため、キーとして使用することはできません。代わりにそれをラップすることができますNSNumber
:
NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];
@Marioと@EvanMulawskiの両方に同意しますが、キーに文字列を使用することを好みます。ああ、そしてコンパイラがanの使用を拒否する理由NSInteger
は、NSInteger
sがsとほとんど同じであるということlong int
です。
NSString* elementKey = [NSString stringWithFormat:@"%i",_viewBeingDragged.tag];
//or NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];
NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
NSNumber
文字通りに包みます。
myClass* element = _model.elements[@(_viewBeingDragged.tag)];
そして割り当て:
NSInteger tag = view.tag;
myClass *value;
_model.elements[@(tag)] = value;
NSCopying準拠オブジェクトを使用できますが、キーのNSStringを作成します。
NSString *key = [NSString stringWithFormat: @"%d",elementKey];