这个问题很接近this question。
假设我在特定属性上排序NSArray
个Foo
个对象(例如,假设这些对象具有名为NSDate*
的{{1}}属性:
date
如何使用下面提供的@interface Foo : NSObject
@property (strong, nonatomic) NSDate *date; // sort key
...
@end
...
NSArray *arrayOfFoos;
提供的方法执行此数组的二进制搜索,以查找具有特定日期的对象?这是我目前的尝试:
NSArray
这里我(错误地)假设第一个参数const NSInteger index =
[arrayOfFoos indexOfObject:date
inSortedRange:(NSRange){0, arrayOfFoos.count}
options:NSBinarySearchingFirstEqual
usingComparator:^NSComparisonResult(id obj1, id obj2) {
NSDate *d = (NSDate*) obj1;
Foo *foo = (Foo*)obj2;
return [d compare:foo.date];
}];
是搜索关键字,而obj1
将是数组元素。
注意:我试图避免将obj2
键包装在临时date
对象中(如果可能的话)。