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 に答える