दिलचस्प पोस्ट
कैसे एक JUnit एक लकड़हारा में एक संदेश पर जोर दिया सी # विभाजन स्ट्रिंग्स? .htaccess समस्या: कोई इनपुट फ़ाइल निर्दिष्ट नहीं है विरासत में कंसल्टेंट्स / डिस्ट्रिक्टर्स के फोन करने का आदेश पायथन में फ़ाइल में एक पंक्ति की खोज करें और उसे बदलें पटरियों, प्रमाणीकरण का आश्वासन, सीएसआरएफ मुद्दे किसी भी वर्ण से मिलान करने के लिए नियमित अभिव्यक्ति 10 बार से अधिक दोहराई जा रही है सूची से एक मूल्य के सभी घटनाओं को निकालें? व्युत्पन्न कक्षाओं में कार्य के लिए C ++ "आभासी" कीवर्ड क्या ये ज़रूरी हैं? अंगुलियों 2 में * ngFor का उपयोग करके को पुनरावृति कैसे करें कैसे सशर्त प्रकार असाइनमेंट का उपयोग करते हुए प्रकार विशेषता गुण पर निर्भर करते हैं कैसे "संदर्भित असेंबली में कोई मजबूत नाम नहीं है" त्रुटि को ठीक करने के लिए? कई 'if else' स्टेटमेंट को क्लीनर दृष्टिकोण में परिवर्तित करना क्या एक तत्व पर घुमना और एक अलग तत्व को प्रभावित करने का कोई तरीका है? रास्पबेरी पी क्रॉस-कंपाइलर स्थापित करना

एक NSArray पर प्राकृतिक रूप कैसे करें?

मेरे पास वस्तुओं की एक सरणी है, और मुझे उनकी "शीर्षक" कुंजी के आधार पर सॉर्ट किया गया है यह वर्तमान में काम कर रहा है, हालांकि यह किसी प्राकृतिक प्रकार के बजाय एएससीआईआई प्रकार का उपयोग कर रहा है शीर्षक फ़ाइल नाम हैं, इसलिए वे इस तरह दिखते हैं:

file1
करें 2
file3

file10
file11
file12

मैं उम्मीद कर रहा हूं:

file1
file10
file11
file12
करें 2
file3

क्या किसी को पता है कि क्या एनएएसआरआरई सॉर्टिंग की कार्यक्षमता में वर्णित रूप से इस प्राकृतिक सॉर्टिंग के लिए अंतर्निहित तरीके से निर्मित किया गया है? मुझे कुछ जेनेरिक एल्गोरिदम मिले, लेकिन मैं कुछ अंतर्निहित के लिए आशा कर रहा था …

वेब के समाधान से एकत्रित समाधान "एक NSArray पर प्राकृतिक रूप कैसे करें?"

एनएसएसटीरिंग एस की तुलना एनएसएन्यूमेरिक खोज तुलना विकल्प से की जा सकती है।

एक संस्करण:

 NSInteger sort(Obj* a, Obj* b, void*) { return [[a title] compare:[b title] options:NSNumericSearch]; } result = [array sortedArrayUsingFunction:&sort context:nil]; 

या थोड़ा अधिक सामान्य:

 NSInteger sort(id a, id b, void* p) { return [[a valueForKey:(NSString*)p] compare:[b valueForKey:(NSString*)p] options:NSNumericSearch]; } result = [array sortedArrayUsingFunction:&sort context:@"title"] 

या ब्लॉक का उपयोग कर:

 result = [array sortedArrayUsingComparator:^(Obj* a, Obj* b) { return [[a title] compare:[b title] options:NSNumericSearch]; }]; 

मैक ओएस एक्स 10.6 और बाद में और आईओएस 4 और बाद में फाइंडर के सॉर्टिंग व्यवहार को दोहराने का प्रयास करने वाले लोग localizedStandardCompare: उपयोग कर सकते हैं localizedStandardCompare: तुलनित्र चयनकर्ता के रूप में

मैक ओएस एक्स और / या आईओएस के पिछले संस्करणों पर समान लक्ष्य वाले लोग स्ट्रिंग प्रोग्रामिंग गाइड में वर्णित समाधान का उपयोग करना चाहिए।

@ पीटरहोसी के उत्तर के आधार पर, यदि आप स्ट्रिंग ऑब्जेक्ट्स की एक सरणी के साथ काम कर रहे हैं:

संक्षिप्त जवाब:

 NSArray *orderedTitles = [unorderedTitles sortedArrayUsingSelector:@selector(localizedStandardCompare:)]; 

पूर्ण उदाहरण:

 NSArray *unorderedTitles = @[ @"file12", @"file1", @"file10", @"file3", @"file2", @"file11" ]; NSArray *orderedTitles = [unorderedTitles sortedArrayUsingSelector:@selector(localizedStandardCompare:)]; NSLog(@"orderedTitles = %@", orderedTitles); /* orderedTitles = ( file1, file2, file3, file10, file11, file12 ) */ 

यह आईओएस पर काम करता है

 NSString *name0 = @"winter"; NSString *name1 = @"summer"; CFComparisonResult result = CFStringCompareWithOptions( (CFStringRef) name0, (CFStringRef) name1, CFRangeMake (0, CFStringGetLength((CFStringRef) name0)), kCFCompareCaseInsensitive | kCFCompareLocalized | kCFCompareNumerically ); 

आप निम्नलिखित तरीके से सॉर्टिंग भी कर सकते हैं:

 NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES selector:@selector(localizedStandardCompare:)]; NSArray *sortedItems = [unsortedItems sortedArrayUsingDescriptors:@[sortDescriptor]];