对包含自定义对象的NSArray进行排序

时间:2012-03-15 13:23:42

标签: objective-c ios sorting nsmutablearray

我有一个包含对象的NSArray。我的对象是这样的:

@interface Personne : NSObject{

    int _id;
    NSString *name;
}

我有一个Web服务,可以通过名字返回给我。例如;当我点击搜索栏并输入“a”时,服务器将所有名称中包含“a”的人返回给我,我将结果放入NSArray。现在我想对我的数组进行排序,并将名称以“a”开头的人放在我的数组的开头,将其他人放在最后。我怎么能这样做?

编辑:例如,我有这样的服务器响应:

marakech  
arabie  
malakit  
arsenal  
astonvilla

我想这样排序:

arabie 
arsenal 
astonvilla 
malakit

2 个答案:

答案 0 :(得分:2)

我认为你需要一个NSMutableArray,而不是NSArray。还要使用sortUsingSelector:

进行排序

即。首先,您可以为Personne- (NSComparisonResult)compare:(MyObj *)otherObj编写方法,然后您可以使用sortUsingSelector:@selector(compare:)

对可变数组进行排序

检查一下 - How to sort an NSMutableArray with custom objects in it?

答案 1 :(得分:2)

您可以使用此方法:

- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr

采用比较器块,然后您可以将您的排序标准放在块中,如下所示:

mySortedArray = [myArrat sortedArrayUsingComparator: ^(id a, id b) {
    //criteria;
    return [a compare:b];