按订单排序数组..?

Kap*_*isa 4 iphone objective-c nsmutablearray nssortdescriptor

很抱歉问愚蠢的问题..

我有一个类对象的数组,如:

Class User {
     NSString *firstName, *LastName;
}
@property (nonatomic, retail) NSString *firstName;
@property (nonatomic, retail) NSString *LastName;
Run Code Online (Sandbox Code Playgroud)

我正在创建此类的对象并将其添加到NSMutableArray中.

现在我想用名字排序这个数组..请任意.

我可以使用NSSortDescriptor来排序这个数组,或者我必须使用我的自定义逻辑.

我之前做过这件事,但现在我忘了这个,现在没有源代码......

请帮帮我..谢谢

EDIT:我得到了一些回复,我试过但没有工作.我正在解析JSON,因此myArray中将有未知数量的对象.所以我用过:

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
Run Code Online (Sandbox Code Playgroud)

 NSMutableArray *tempArray = [myArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
Run Code Online (Sandbox Code Playgroud)

但没有任何效果..

Edit 2

这是描述:数组

    "<User: 0xa3f13c0>",
    "<User: 0xa3f1410>",
    "<User: 0xa3f1450>",
    "<User: 0xa3f1490>"
Run Code Online (Sandbox Code Playgroud)

排序数组

"<User: 0xa3f13c0>",
"<User: 0xa3f1410>",
"<User: 0xa3f1490>",
"<User: 0xa3f1450>"
Run Code Online (Sandbox Code Playgroud)

在for循环:数组

John
abc
test
qwertg
Run Code Online (Sandbox Code Playgroud)

排序数组

John
abc
test
qwertg
Run Code Online (Sandbox Code Playgroud)

Vla*_*mir 9

如果你的目标是iOS4 +,那么你可以使用sortUsingComparator:方法:

[yourArray sortUsingComparator:^(id obj1, id obj2){

        User* u1 = (User*)obj1;
        User* u2 = (User*)obj2;
        return [u1.firstName compare:u2.firstName];
    }];
Run Code Online (Sandbox Code Playgroud)

编辑:由于比较方法考虑了字符大小写,您可能需要使用caseInsensitiveCompare:方法而不是它:

[yourArray sortUsingComparator:^(id obj1, id obj2){

        User* u1 = (User*)obj1;
        User* u2 = (User*)obj2;
        return [u1.firstName caseInsensitiveCompare:u2.firstName];
    }];
Run Code Online (Sandbox Code Playgroud)