繁体   English   中英

使用自定义对象对数组进行排序

[英]Sort array with custom objects

我正在尝试对数组进行排序,其中填充了我编写的类中的对象。 我编写的类包含一个NSString本身,即“名称”。 所以我想做的就是根据对象包含的name属性对数组进行排序。 我尝试了简单的方法:

[anArray sortedArrayUsingSelecter: CaseInsensitiveCompare];

但是您可以猜到,它会将caseInsensitiveCompare消息发送给对象本身,并且不会响应该消息。

所以我想我必须使我的对象能够响应caseInsensitiveCompare吗? 不太确定如何编写这样的方法,因此任何指针都将很可爱。

谢谢

您可以使用sortedArrayUsingComparator方法:

NSArray *sortedArray = [anArray sortedArrayUsingComparator:^(MyClass *a, MyClass *b) {
    return [a.name caseInsensitiveCompare:b.name];
}];

您可以sortedArrayUsingComparator:(NSComparator)cmptrNSArray参考 )对数组进行排序。 例如,如果要按name属性排序,请执行以下操作(假设您的类称为Person ):

NSArray *sortedArray = [anArray sortedArrayUsingComparator:^(id a, id b) {
    NSString *first = [(Person *)a name];
    NSString *second = [(Person *)b name];
    return [first caseInsensitiveCompare:second];
}];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM