2012-02-23 16 views
6

में तत्वों कोई त्वरित तरीका मैं एक NSString सरणी के भीतर तार की संख्या प्राप्त कर सकते हैं?Xcode: गणना स्ट्रिंग सरणी

NSString *s[2]={@"1", @"2"} 

मैं इस से की लंबाई प्राप्त करना चाहते हैं। वहाँ मैं (s.size) मुझे पता है -length विधि लेकिन यह है कि एक स्ट्रिंग नहीं एक स्ट्रिंग सरणी के लिए है की तरह कुछ। मैं एक्सकोड में नया हूं कृपया नम्र रहें।

उत्तर

19

उपयोग NSArray

NSArray *stringArray = [NSArray arrayWithObjects:@"1", @"2", nil]; 
NSLog(@"count = %d", [stringArray count]); 
+0

हाँ मैं अंत में एक परिवर्तनीय सरणी का उपयोग करूँगा। लेकिन जिज्ञासा से बाहर। क्या आप वास्तव में इस लंबाई को पुनः प्राप्त नहीं कर सकते हैं? –

+2

असल में, आप 'का उपयोग करना चाहिए [stringArray गिनती]' के बाद से यह एक उदाहरण विधि और नहीं एक संपत्ति है। – Rengers

+0

@ यात्रियों जो कोई फर्क नहीं पड़ता। एक पठनीय संपत्ति बिल्कुल एक उदाहरण विधि के समान ही है। – Sulthan

4

हाँ, वहाँ एक तरीका है। ध्यान दें कि यह केवल तभी काम करता है जब सरणी malloc का उपयोग करके गतिशील रूप से नहीं बनाई गई है।


NSString *array[2] = {@"1", @"2"} 

//size of the memory needed for the array divided by the size of one element. 
NSUInteger numElements = (NSUInteger) (sizeof(array)/sizeof(NSString*)); 

सरणी के इस प्रकार के सी के लिए विशिष्ट है, और के बाद से Obj सी सी सुपरसेट है, यह इसका इस्तेमाल करने के लिए कानूनी है। आपको केवल अतिरिक्त सावधान रहना होगा।

0

उद्देश्य-सी में _countf के लिए खोज करने की कोशिश की लेकिन यह मौजूदा नहीं लगता है, तो यह सोचते हैं कि sizeof और typeof ऑपरेटरों ठीक से काम करता है और आप वैध ग सरणी गुजरती हैं, तो निम्न कार्य कर सकते हैं।

#define _countof(_obj_) (sizeof(_obj_)/(sizeof(typeof(_obj_[0])))) 

NSString *s[2]={@"1", @"2"} ; 
NSInteger iCount = _countof(s) ; 
संबंधित मुद्दे