0

我正在尝试使用以下代码查找核心数据记录的索引,其中 [self numItems] 返回记录数。代码平均执行大约需要 0.2 秒。我有兴趣加快速度。提前致谢。

- (NSInteger) indexWithTaskID:(NSInteger)eventID
{
    for (NSInteger i=0;i<[self numItems];i++) {
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
        NSManagedObject *managedObject = [self.fetchedResultsController
                                      objectAtIndexPath:indexPath];
        NSInteger myEventID = [(NSNumber *)[managedObject valueForKey:@"eventID"] intValue];

        if (myEventID == eventID) {
            return i;
        }
    }
    return -1;
}
4

1 回答 1

0

这有点落后于设置的目的,如果你有很多数据,我会尽量避免需要找到这个索引,但如果你真的需要知道索引,那么你可能会被困在这个搜索中。如果谓词已排序,则可以比线性搜索做得更好,也许简单的二分搜索可以带来足够的改进。

于 2012-07-09T18:44:22.270 回答