數(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)題歡迎留言??