आप NSNumber
के NSArray
वस्तुओं में स्ट्रिंग के पात्रों में से प्रत्येक संग्रहीत कर सकती है और फिर उस छांटते हैं। थोड़ा महंगा लगता है, इसलिए मैं शायद इसके बजाय qsort()
का उपयोग करूंगा।
यहाँ यह एक ऑब्जेक्टिव-सी श्रेणी (untested) के रूप में प्रदान की जाती है:
NSString + SortExtension.h:
#import <Foundation/Foundation.h>
@interface NSString (SortExtension)
- (NSString *)sorted;
@end
NSString + SortExtension.m:
#import "NSString+SortExtension.h"
@implementation NSString (SortExtension)
- (NSString *)sorted
{
// init
NSUInteger length = [self length];
unichar *chars = (unichar *)malloc(sizeof(unichar) * length);
// extract
[self getCharacters:chars range:NSMakeRange(0, length)];
// sort (for western alphabets only)
qsort_b(chars, length, sizeof(unichar), ^(const void *l, const void *r) {
unichar left = *(unichar *)l;
unichar right = *(unichar *)r;
return (int)(left - right);
});
// recreate
NSString *sorted = [NSString stringWithCharacters:chars length:length];
// clean-up
free(chars);
return sorted;
}
@end
अपने विधि नाम sortedArrayUsingComparator हो सकता है और नहीं करना चाहिए sortUsingComparator – tiguero
ध्यान दें कि का उपयोग करते हुए 'substringWithRange:' इसका मतलब यह है की तरह है कि इस प्रक्रिया के '' हे की तरह बना पात्रों के साथ काम नहीं करेगा। यह एक घातक आपत्ति नहीं है, केवल एक चेतावनी है। –