2013-12-12 7 views
9

मैं कुछ कोड लिख रहा हूं जो एनएसएमयूटेबलएरे का उपयोग करेगा और इसके भीतर int मानों को संग्रहीत करेगा, जो एनएसएन बोर्स के भीतर लपेटा जाएगा।आईओएस एनएसएमयूटेबलएरे कैसे जांचता है अगर इसमें NSNumber ऑब्जेक्ट्स हैं?

यदि प्रत्येक पूर्णांक मूल्य मूल्य मैं के बराबर है मैं पुष्टि करते हैं कि एक ही मूल्यों के साथ नए NSNumbers का उपयोग कर एक iOS NSArray या NSMutableArray से क्वेरी कानूनी है, की अगर मैं स्पष्ट रूप से सरणी पर पुनरावृति करने की जरूरत है, और जांच करना चाहते हैं के खिलाफ परीक्षण करना चाहते हैं?

NSMutableArray* walkableTiles = [NSMutableArray array];  


[walkableTiles addObject:@(1)]; 
[walkableTiles addObject:@(2)]; 
[walkableTiles addObject:@(3)]; 


if([walkableTiles containsObject:@(1)]) 
{ 
    DLog(@"contains 1"); //test passes 
} 
if([walkableTiles containsObject:[NSNumber numberWithFloat:2.0]]) 
{ 
    DLog(@"contains 2");//test passes 
} 
if([walkableTiles containsObject:[NSNumber numberWithInt:3]]) 
{ 
    DLog(@"contains 3");//test passes 
} 
+0

* कानूनी * से आपका क्या मतलब है? मुझे पूरा यकीन है कि 'includeObject:' किसी बिंदु पर सरणी पर फिर से चलाता है। – dandan78

+1

क्या आपने includeObject के लिए spec पढ़ा है? "यह विधि निर्धारित करती है कि सरणी में एक ऑब्जेक्ट मौजूद है IEqual: प्रत्येक सरणी की ऑब्जेक्ट्स को संदेश (और प्रत्येक को पैरामीटर के रूप में anObject पास करना है एक्वाल: संदेश)।" –

+0

NSNumber संख्या के बजाय विजिंट: आप अक्षर का उपयोग कर सकते हैं और @ (3) –

उत्तर

16

तुम क्या कर रहे ठीक है:

यह काम करने के लिए प्रकट होता है। ऐसा क्यों नहीं होगा?

containsObject: विधि वास्तव में सरणी पर फिर से चलती है और जिस वस्तु को आप जांच रहे हैं उसमें गुज़रने वाली प्रत्येक वस्तु पर isEqual: विधि को कॉल करती है।

बीटीडब्ल्यू - NSNumber का उपयोग करने के बारे में यहां कुछ खास नहीं है। यह किसी ऑब्जेक्ट प्रकार की सरणी के साथ समान है। जब तक ऑब्जेक्ट की कक्षा में वैध isEqual: विधि हो, तो यह काम करेगी।

2

प्रति Apple's NSNumber documentation, आप isEqualToNumber उपयोग करना चाहिए:

isEqualToNumber: एक बूलियन मान इंगित करता है कि रिसीवर और दी गई संख्या के बराबर हैं कि क्या देता है। - (बूल) isEqualToNumber: (NSNumber *) aNumber

+0

का उपयोग कर सकते हैं लेकिन Isqual ठीक काम करेगा। यह बस कसकर टाइप नहीं किया गया है। –

+0

(एनएसएनंबर एनएसओब्जेक्ट के अनुरूप है, जहां एक्वाल परिभाषित किया गया है।) –

संबंधित मुद्दे