对Objective-c对象数组进行排序

时间:2010-05-06 11:12:12

标签: iphone objective-c sorting

所以我有一个自定义类Foo,它有许多成员:

@interface Foo : NSObject {
    NSString *title;
    BOOL     taken;
    NSDate   *dateCreated;
}

在另一个班级中,我有一个NSMutableArray,其中包含这些对象的列表。我非常想根据dateCreated属性对这个数组进行排序;我知道我可以为此编写自己的分类器(迭代数组并根据日期重新排列)但我想知道是否有一个正确的Objective-C方法来实现这一目标?

我可以提供成员变量排序的某种排序机制会很棒。

在C ++中,我过去常常重载< =>运营商和这允许我按对象排序,但我有一种有趣的感觉Objective-C可能提供更好的选择?

非常感谢

1 个答案:

答案 0 :(得分:15)

这很简单。

首先,在你的Foo对象中,创建一个方法

- (NSComparisonResult) compareWithAnotherFoo:(Foo*) anotherFoo;

将返回

[[self dateCreated] compare:[anotherFoo dateCreated]];

最后,调用数组

[yourArray sortUsingSelector:@selector(compareWithAnotherFoo:)];

希望这有帮助, 保罗