दिलचस्प पोस्ट
वेक्टर में मानों के आधार पर डेटा फ्रेम से पंक्तियां चुनें MySQL CONVERT_TZ () एक HTML पृष्ठ में एक SWF फ़ाइल को कैसे एम्बेड करें? IPhone के उद्देश्य-सी के लिए Google दिशा-एपीआई पॉलीलाइन फ़ील्ड को लेट लंबे अंकों में कैसे डिकोड किया जाए? PHP के माध्यम से एक HTTPS अनुरोध करें और प्रतिक्रिया प्राप्त करें SQL सर्वर तालिका स्तंभ में एक स्ट्रिंग को कैसे बदलें आर में संचयी गणना प्रोग्राम के लिए रूट विशेषाधिकार कैसे प्राप्त करें? एसएमएस इनकमिंग और आउटगोइंग का पता लगा रहा है कैसे एक जर्सी आराम वेब सेवा की परीक्षा? SAX पार्सर्स जावा में XPath का उपयोग कर सकते हैं? रीयल-टाइम ऑडियो इनपुट से प्रति मिनट बीट्स कस्टम के साथ हीपक की तुलना ख़राब है एक यूआईएलबल में स्थान / पैडिंग जोड़ना git update-index –assume-unchanged निर्देशिका पर

उद्देश्य-सी में स्ट्रिंग टाइप की एक दो आयामी सरणी कैसे घोषित करें?

मैं उद्देश्य- C में स्ट्रिंग टाइप की एक दो आयामी सरणी कैसे घोषित करूं?

Solutions Collecting From Web of "उद्देश्य-सी में स्ट्रिंग टाइप की एक दो आयामी सरणी कैसे घोषित करें?"

सबसे पहले, आप अपने आंतरिक सरणी के स्ट्रिंग को पकड़ने के लिए एक क्लास का उपयोग करने पर विचार कर सकते हैं, या उसे एक प्लास्ट फ़ाइल से लोड कर सकते हैं (जिसमें स्ट्रिंग के 2 डी सरणी बनाना आसान है)।

सीधे घोषणाओं के लिए, आपके पास कुछ विकल्प हैं यदि आप एक NSArray का उपयोग करना चाहते हैं, तो आपको मैन्युअल रूप से इस तरह की संरचना बनाना होगा:

NSMutableArray *strings = [NSMutableArray array]; for(int i = 0; i < DESIRED_MAJOR_SIZE; i++) { [strings addObject: [NSMutableArray arrayWithObject:@"" count:DESIRED_MINOR_SIZE]]; } 

या, ऐरे शाब्दिक प्रयोग करके, आप इस तरह एक अपरिवर्तनीय संस्करण प्राप्त कर सकते हैं:

 NSArray *strings = @[ @[ @"A", @"B", @"C" ], @[ @"D", @"E", @"F" ], @[ @"G", @"H", @"I" ] ] 

आप इसे इस तरह उपयोग कर सकते हैं:

 NSString *s = [[strings objectAtIndex:i] objectAtIndex:j]; 

यह आरंभ करने के लिए कुछ अजीब है, लेकिन यदि आप NSArray विधियों का उपयोग करना चाहते हैं तो यह जाने का तरीका है

सी ऑरेंज का उपयोग करने के लिए एक विकल्प है:

 NSString *strings[MAJOR_SIZE][MINOR_SIZE] = {0}; // all start as nil 

और फिर इसे इस तरह प्रयोग करें:

 NSString *s = strings[i][j]; 

यह कम अजीब है, लेकिन आपको उन्हें बनाए रखने के लिए सावधान रहना / प्रतिलिपि बनाना और जारी करना और उन्हें सरणी से निकालना होगा। (जब तक आप एआरसी का इस्तेमाल नहीं कर रहे हैं!) एनएसएआरए आपके लिए यह कर रहे हैं लेकिन सी-स्टाइल एरे के साथ, आपको एक सरणी बदलने के लिए ऐसा कुछ करना होगा:

 [strings[i][j] release]; strings[i][j] = [newString retain]; 

अन्य अंतर यह है कि आप सी-स्टाइल सरणी में शून्य डाल सकते हैं, लेकिन NSArrays नहीं – इसके लिए आपको NSNull का उपयोग करना होगा। स्टैक अतिप्रवाह प्रश्न कोकोआ पर एक नज़र डालें : NSString स्मृति प्रबंधन के बारे में अधिक के लिए NSString के साथ मेमोरी प्रबंधन।

यदि आप तारों की दो-आयामी सरणी को घोषित और आरम्भ करना चाहते हैं, तो आप ऐसा कर सकते हैं:

 NSArray *myArray = [NSArray arrayWithObjects: [NSArray arrayWithObjects:@"item 1-1", @"item 1-2", nil], [NSArray arrayWithObjects:@"item 2-1", @"item 2-2", nil], [NSArray arrayWithObjects:@"item 3-1", @"item 3-2", nil], [NSArray arrayWithObjects:@"item 4-1", @"item 4-2", nil], nil]; 

इसमें आपको एक अपरिवर्तनीय सरणी देने का लाभ होता है

मैं स्वयं विज्ञापन कर सकता हूं लेकिन मैंने एनएमयूटीबलअरेरे पर एक आवरण लिखे हैं, जो कि 2 डी सरणी के रूप में आसान उपयोग करते हैं। यह GitHub पर CRL2DArray रूप में उपलब्ध है। https://github.com/tGilani/CRL2DArray