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)
如果你的目标是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)
| 归档时间: |
|
| 查看次数: |
2678 次 |
| 最近记录: |