是否有一种有效的方法来确定特定核心数据记录的索引

时间:2012-07-08 02:51:17

标签: iphone ios core-data

我试图使用以下代码找到核心数据记录的索引,其中[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;
}

1 个答案:

答案 0 :(得分:0)

这有点落后于我的设置,如果你有很多数据,我会尽量避免找到这个索引,但是如果你真的需要知道索引那么你可能会被困在这个搜索中。如果对谓词进行了排序,那么你可以比线性搜索做得更好,也许simple binary search可以做出足够的改进。