二进制搜索具有匹配键的对象的NSArray

时间:2015-09-02 16:59:53

标签: objective-c nsarray binary-search

这个问题很接近this question

假设我在特定属性上排序NSArrayFoo个对象(例如,假设这些对象具有名为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对象中(如果可能的话)。

0 个答案:

没有答案