使用自定义类的实例对数组进行排序

Rob*_*bin 4 arrays sorting iphone objective-c

我有一个数组填充自定义类的实例,其中包含两个String属性,firstname和lastname.两者都有一个getter方法,它等于属性本身的名称.还有一种方法可以检索名为"getFullName"的人的全名.考虑下面的例子.

 CustomClass *person = [[CustomClass alloc] ...];
 person.firstname  // Returns "Thomas"
 person.lastname // Returns "Meier"
 [person getFullName] // Returns "Thomas Meier"
Run Code Online (Sandbox Code Playgroud)

现在我想按降序对Fullname这个数组进行排序.我一直在研究一些数组排序方法,但还不太清楚如何解决这个问题.我想我必须创建一些比较两个元素的比较函数,但是如何告诉SDK哪些值传递给这个方法以及我应该放在哪里(在自定义类或排序发生的类中) ?).也许有另一种/更好的方法来解决这个问题?不可否认,我几乎没有排序数组的经验.

非常感谢你的帮助!

PS.代码应该在iOS 3.2上运行

Ben*_*tto 5

有几种方法可以做到这一点.一种是在自定义类上放置一个比较方法.称它为-compare:类似的东西.该方法应该采用与其输入相同的自定义类型的另一个对象.它应该返回NSOrderedAscending,, NSOrderedDescending或者NSOrderedSame,取决于比较的结果.(在此比较函数中,您可以查看自己的fullName与传入对象的fullName.)

然后你可以使用NSMutableArray-sortUsingSelector:方法,像这样:

[myArray sortUsingSelector:@selector(compare:)];
Run Code Online (Sandbox Code Playgroud)

这适用于所有版本的iOS.4.0+中有块比较方法.