2016-12-02 79 views
2

我目前解析我NSArray通过这个代码排序一个NSMutableArray的

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES]; 
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]]; 

而且myArray的对象是EP 1至EP 50,未分类。问题出在一个数字的数字上。而且我无法为其添加0前缀,因此数组是动态的,并且某个对象可能会导致崩溃。

我期待这样的:

EP 1 EP 2 EP 3 ..... EP 10 EP 11 EP 12 EP 13 .... EP 20 EP 21 ...

但我的输出是这样的

Ep 1 Ep 10 Ep 11 Ep 12 Ep 13 ..... Ep 2 Ep20 Ep 21 Ep 22 .... Ep 3 Ep 30 Ep 31 ......

现在,我该如何正确分类?

回答

3

你需要使用NSNumericSearch选项sortedArrayUsingComparator像这样。

如果您的数组包含自定义对象。

NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(Episode *ep1, Episode *ep2) { 
    return [ep1.title compare:ep2.title options:NSNumericSearch]; 
}]; 

如果你的数组包含NSDictionary

NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(NSDictionary *dic1, NSDictionary *dic2) { 
    return [(NSString*)[dic1 objectForKey:@"title"] compare:(NSString*)[dic2 objectForKey:@"title"] options:NSNumericSearch]; 
}]; 
+0

小错误:'obj1.title' =>'ep1.title'。 – Larme

+0

@Larme错字错误,感谢纠正我:) –