2012-12-02 9 views
5

मैं एनएसएमयूटेबलएरे में डेट स्ट्रिंग को सॉर्ट करने पर कुछ छोटा काम कर रहा हूं, मुझे एसक्लाइट डीबी से सरणी मिल रही है। आप सरणी यह ​​इसदिनांक वस्तुओं के एनएसएमयूटेबलएरे को कैसे क्रमबद्ध करें

तारीख तार की तरह दिख रहा है प्रिंट तो कर रहे हैं ( "2011-05-01", "2011-02-01", "2012-01-08", "2012- 05-08 ", " 2010-01-09 )

मैं आरोही क्रम में दिनांक दिखाना चाहते हैं। कृपया मेरी मदद करो बाहर लोग ..... मैं ObjC को नौसिखिया हूँ ..

उत्तर

22

सबसे पहले आपको सभी दिनांक स्ट्रिंग्स (जो NSString है) ऑब्जेक्ट्स को NSDate ऑब्जेक्ट्स में कनवर्ट करना चाहिए और फिर इन dateObjects को सॉर्ट करना चाहिए ।

मेरा मानना ​​है कि आपके पास dateArray है जो उन सभी तारों को शामिल करता है।

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"self" 
                  ascending:NO]; 
NSArray *descriptors = [NSArray arrayWithObject:descriptor]; 
NSArray *reverseOrder = [dateArray sortedArrayUsingDescriptors:descriptors]; 

या

NSArray *reverseOrderUsingComparator = [dateArray sortedArrayUsingComparator: 
             ^(id obj1, id obj2) { 
              return [obj2 compare:obj1]; 
             }]; 
+0

वह अपने प्रारूप में दिखाए गए दिनांक प्रारूप को तारों के रूप में सही ढंग से क्रमबद्ध करेगा। –

+0

यह अनावश्यक है, वह सिर्फ स्ट्रिंग्स को व्यवस्थित कर सकता है क्योंकि वे अभी हैं। – TheAmateurProgrammer

+0

यदि आप संभव हो तो कोड को पसंद कर सकते हैं ... – Joker

5

अपनी तिथियाँ वास्तव में प्रारूप YYYY-mm-dd में तार कर रहे हैं, अपने प्रश्न में के रूप में, तो यह उन्हें आरोही क्रम में सॉर्ट देगा:

[arrayOfDates sortUsingSelector:@selector(compare:)]; 

कि यदि आपकी तिथियां वास्तव में NSDate ऑब्जेक्ट्स हैं तो भी काम करेगी।

आप सरणी के अनुसार क्रमबद्ध प्रतिलिपि बनाने के लिए करना चाहते हैं:

NSArray *sortedArray = [arrayOfDates sortedArrayUsingSelector:@selector(compare:)]; 
1

छंटाई किया जाना चाहिए, imo, डेटाबेस से, सामान्य रूप में। sqlite3 order by का समर्थन करता है।

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