यदि आप पूर्णांक की एक सरणी बनाना चाहते हैं, तो क्या आप NSInteger का उपयोग कर सकते हैं? क्या आपको NSNumber का उपयोग करना है? यदि ऐसा है, तो क्यों?
यदि आप पूर्णांक की एक सरणी बनाना चाहते हैं, तो क्या आप NSInteger का उपयोग कर सकते हैं? क्या आपको NSNumber का उपयोग करना है? यदि ऐसा है, तो क्यों?
जवाबों:
आप एक सादे पुराने सी सरणी का उपयोग कर सकते हैं:
NSInteger myIntegers[40];
for (NSInteger i = 0; i < 40; i++)
myIntegers[i] = i;
// to get one of them
NSLog (@"The 4th integer is: %d", myIntegers[3]);
या, यदि आप एक का उपयोग कर सकते NSArrayया NSMutableArray, लेकिन यहाँ आप एक अंदर प्रत्येक पूर्णांक लपेट के लिए की आवश्यकता होगी NSNumber(क्योंकि उदाहरण NSArrayवस्तुओं पकड़ वर्ग उदाहरणों को तैयार कर रहे हैं)।
NSMutableArray *myIntegers = [NSMutableArray array];
for (NSInteger i = 0; i < 40; i++)
[myIntegers addObject:[NSNumber numberWithInteger:i]];
// to get one of them
NSLog (@"The 4th integer is: %@", [myIntegers objectAtIndex:3]);
// or
NSLog (@"The 4th integer is: %d", [[myIntegers objectAtIndex:3] integerValue]);
NSArray, मुझे यकीन है कि आप प्रदर्शन हिट महसूस नहीं करेंगे।
सी सरणी:
NSInteger array[6] = {1, 2, 3, 4, 5, 6};
उद्देश्य-सी सरणी:
NSArray *array = @[@1, @2, @3, @4, @5, @6];
// numeric values must in that case be wrapped into NSNumbers
स्विफ्ट एरे:
var array = [1, 2, 3, 4, 5, 6]
यह सही भी है:
var array = Array(1...10)
नायब: स्विफ्ट में सरणियों को दृढ़ता से टाइप किया जाता है; उस स्थिति में, संकलक उस सामग्री से प्रभावित होता है जो सरणी पूर्णांक का एक सरणी है। आप इस स्पष्ट प्रकार सिंटैक्स का उपयोग कर सकते हैं:
var array: [Int] = [1, 2, 3, 4, 5, 6]
यदि आप डबल्स की एक सरणी चाहते हैं, तो आप उपयोग करेंगे:
var array = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0] // implicit type-inference
या:
var array: [Double] = [1, 2, 3, 4, 5, 6] // explicit type
यदि आप NSArray का उपयोग करना चाहते हैं, तो आपको इसमें डालने के लिए एक Objective-C क्लास की आवश्यकता है - इसलिए NSNumber आवश्यकता है।
उस ने कहा, ओब्ज-सी अभी भी सी है, इसलिए यदि आप की जरूरत है, तो आप नियमित सी सरणियों का उपयोग कर सकते हैं और एनएसएनटल के बजाय नियमित रूप से इनलेट पकड़ सकते हैं।
आप NSArray के बजाय CFArray का उपयोग कर सकते हैं । यहाँ एक लेख बताया गया है कि कैसे।
CFMutableArrayRef ar = CFArrayCreateMutable(NULL, 0, NULL);
for (NSUInteger i = 0; i < 1000; i++)
{
CFArrayAppendValue(ar, (void*)i);
}
CFRelease(ar); /* Releasing the array */
यही बात अन्य कंटेनरों के CoreFoundation संस्करण के लिए भी लागू होती है।
मैंने अच्छे पुराने सी एरे के इर्द-गिर्द एक साधारण वस्तुनिष्ठ सी आवरण बनाया है जिसका उपयोग अधिक आसानी से किया जा सकता है: https://gist.github.com/.com/70703333
यदि आपके पूर्णांकों के क्रम की आवश्यकता नहीं है, और यदि केवल विशिष्ट मूल्य हैं
आप NSIndexSet या NSMutableIndexSet का भी उपयोग कर सकते हैं आप आसानी से पूर्णांक जोड़ने या निकालने में सक्षम होंगे, या जांचें कि आपके सरणी में पूर्णांक है या नहीं
- (void)addIndex:(NSUInteger)index
- (void)removeIndex:(NSUInteger)index
- (BOOL)containsIndexes:(NSIndexSet *)indexSet
अधिक जानकारी के लिए प्रलेखन की जाँच करें ।
NSSet(और पूर्णांक का उपयोग करके NSNumber) में क्या गलत है ?
मुझे लगता है कि NSNumbers का उपयोग करना बहुत आसान है। यह सब आपको करना चाहिए:
NSNumber *myNum1 = [NSNumber numberWithInt:myNsIntValue1];
NSNumber *myNum2 = [NSNumber numberWithInt:myNsIntValue2];
.
.
.
NSArray *myArray = [NSArray arrayWithObjects: myNum1, myNum2, ..., nil];
forसंख्याओं के लिए या केवल एक और सरणी का उपयोग कर सकते हैं , और फिर arrayWithArray।