iOS 中文排序、數(shù)組、字典排序

數(shù)組內(nèi)中文排序

看夠了復(fù)雜的中文排序封裝代碼,讓我們來(lái)點(diǎn)小清新,其實(shí)蘋(píng)果不但為我們提供好了排序方法,并且?guī)в卸嘁糇謪^(qū)分,貼心到想哭有木有?

845839142L
0x6b,0x16,0x0e,0x0f,0xfa,0x5b,0xb3,0xf1,0x59,0x52,0xe1,0x4f,0x43,0x9d,0x9a,0x3e,0x3a,0x99,0x83,0x8a,0x1f,0xf2,0x2b,0x0e,0xdc,0x6a,0x36,0x6d,0x37,0xe4,0xe9,0x15


NSArray *dataArr = @[@"蘋(píng)果",@"重慶",@"安陽(yáng)",@"重點(diǎn)",@"加班",@"沈陽(yáng)", @"iOS",@"Young"];
NSArray *rankArr = [dataArr sortedArrayUsingSelector:@selector(localizedCompare:)];
NSLog(@"\n中文升序:%@", [rankArr my_description]);

中文升序:(
    "安陽(yáng)",
    "重慶",
    "加班",
    "蘋(píng)果",
    "沈陽(yáng)",
    "天氣",
    "重點(diǎn)",
    iOS,
    Young
)

也許您會(huì)問(wèn)my_description方法是什么鬼,因?yàn)橹形脑诳刂婆_(tái)輸出為Unicode,不夠直觀,所以加了個(gè)為數(shù)組加了個(gè)類(lèi)擴(kuò)展方法,簡(jiǎn)單有效,不敢私藏,僅供參考:

//  .h 聲明
#import <Foundation/Foundation.h>

@interface NSArray (Unicode)

- (NSString*)my_description;

@end

// .m 實(shí)現(xiàn)
#import "NSArray+Unicode.h"

@implementation NSArray (Unicode)

- (NSString*)my_description {
    NSString *desc = [self description];
    desc = [NSString stringWithCString:[desc cStringUsingEncoding:NSUTF8StringEncoding] 
                              encoding:NSNonLossyASCIIStringEncoding];
    return desc;
}

@end

然而后臺(tái)小伙伴怎么會(huì)給我們?nèi)绱撕?jiǎn)單的數(shù)據(jù),經(jīng)常是數(shù)組內(nèi)套字典,然后我們轉(zhuǎn)為模型使用才是常規(guī)操作。Talk is cheap. Show me the code.

NSArray *dictArr = @[@{@"name": @"蘋(píng)果",   @"word" : @"Apple",   @"number" : @(520)},
                     @{@"name": @"重慶",   @"word" : @"Banana",  @"number" : @(1314)},
                     @{@"name": @"安陽(yáng)",   @"word" : @"China",   @"number" : @(7)},
                     @{@"name": @"加班",   @"word" : @"996.ICU", @"number" : @(119)},
                     @{@"name": @"重點(diǎn)",   @"word" : @"Do",      @"number" : @(54)},
                     @{@"name": @"天氣",   @"word" : @"YOU",     @"number" : @(120)},
                     @{@"name": @"沈陽(yáng)",   @"word" : @"Love",    @"number" : @(114)},
                     @{@"name": @"iOS",   @"word" : @"Me",      @"number" : @(211)},
                     @{@"name": @"Young", @"word" : @"YES",     @"number" : @(521)}];

// 中文排序
NSSortDescriptor *nameSortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name"
                                                               ascending:YES
                                                                selector:@selector(localizedCompare:)];
NSArray *nameRankArr = [dictArr sortedArrayUsingDescriptors:@[nameSortDesc]];
NSLog(@"\n 按name排序升序: %@", [nameRankArr my_description]);

// 英文、數(shù)字排序
NSSortDescriptor *numSortDesc = [NSSortDescriptor sortDescriptorWithKey:@"number"
                                                              ascending:YES];
NSArray *numRankArr = [dictArr sortedArrayUsingDescriptors:@[numSortDesc]];
NSLog(@"\n 按number升序:%@", [numRankArr my_description]);

按name排序升序: (
        {
        name = "安陽(yáng)";
        number = 7;
        word = China;
    },
        {
        name = "重慶";
        number = 1314;
        word = Banana;
    },
        {
        name = "加班";
        number = 119;
        word = "996.ICU";
    },
        {
        name = "蘋(píng)果";
        number = 520;
        word = Apple;
    },
        {
        name = "沈陽(yáng)";
        number = 114;
        word = Love;
    },
        {
        name = "天氣";
        number = 120;
        word = YOU;
    },
        {
        name = "重點(diǎn)";
        number = 54;
        word = Do;
    },
        {
        name = iOS;
        number = 211;
        word = Me;
    },
        {
        name = Young;
        number = 521;
        word = YES;
    }
)

打印有點(diǎn)長(zhǎng),按number升序的輸出我就不貼出來(lái)了,結(jié)果沒(méi)毛病的,請(qǐng)保留一點(diǎn)人與人之間的信任,有問(wèn)題歡迎留言??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容