2012-07-08 49 views
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; 
} 
+0

你称之为什么情境?如果你有完整的managedObject,你可以调用'[self.fetchedResultsController indexPathForObject:managedObject]'。 – joshOfAllTrades 2012-07-08 03:00:32

+0

当这个方法被调用时,我没有特定的managedObject。我只有eventID。谢谢。 – 0x141E 2012-07-08 03:16:02

+0

我仍然对上下文感到好奇。 – joshOfAllTrades 2012-07-08 03:18:12

回答

0

这是一个有点落后的东西,这是用于设置,我会尽量避免需要,如果你有大量的数据发现这个指标,但如果你真的需要知道索引,那么你可能是坚持这个搜索。如果谓词是排序的,那么你可以做更好的线性搜索,也许simple binary search可以做出足够的改进。

相关问题