我想使用UIView標記作爲NSMutableDictionary的鍵。但是,編譯器使用NSInteger作爲關鍵字來對我進行對象。我想要做以下事情:使用UIView標記作爲NSMutableDictionary的鍵
NSInteger elementKey = _viewBeingDragged.tag;
myClass* element = [_model.elements objectForKey:elementKey];
如何將elementKey用作我的字典鍵?
我想使用UIView標記作爲NSMutableDictionary的鍵。但是,編譯器使用NSInteger作爲關鍵字來對我進行對象。我想要做以下事情:使用UIView標記作爲NSMutableDictionary的鍵
NSInteger elementKey = _viewBeingDragged.tag;
myClass* element = [_model.elements objectForKey:elementKey];
如何將elementKey用作我的字典鍵?
而是爲重點創建一個NSString,雖然你可以使用任何NSCopying符合對象:
NSString *key = [NSString stringWithFormat: @"%d",elementKey];
爲什麼向下票呢? – Mario
您的代碼段不正確,因爲您未傳遞參數以匹配「%d」格式說明符。另外,當'NSNumber'更自然時,使用字符串作爲鍵是一個壞主意,並且可能不安全。例如,對於64位,「%d」不是「NSInteger」的右側說明符,因此您可以爲兩個不同的標籤獲取相同的字符串。 –
NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
甲NSInteger
不是一個對象,並且不能被用作密鑰。您可以在NSNumber
,而不是把它包裝:
NSNumber* elementKey = [NSNumber numberWithInt:_viewBeingDragged.tag];
myClass* element = [_model.elements objectForKey:elementKey];
我同意雙方@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];
將其包裝在NSNumber
文字中。
myClass* element = _model.elements[@(_viewBeingDragged.tag)];
和賦值:
NSInteger tag = view.tag;
myClass *value;
_model.elements[@(tag)] = value;
這個問題已經在這裏找到答案:http://stackoverflow.com/questions/2992315/uiview-as-dictionary-key –