1

私は検索を行っており、物事を少しスピードアップする必要があります。車のパーツがたくさんあるので、それらのパーツを搭載した車を探したいと思っています。この部分は大丈夫です。NSManagedObject Cars.h

(cars には、ToCarParts と呼ばれる NSSet があり、車のすべての部品がリストされています)

NSMagagedObject Parts.h (Parts には ToCars と呼ばれる NSSet があり、これに関連付けられているすべての車がリストされています)

//This takes all results gathered by using parts to search for car, and converts them to have the main object be a car
-(NSArray*)convertResultsToCars:(NSArray*)records{
    NSMutableArray *manipulator =[NSMutableArray arrayWithArray:records];
    NSMutableArray *convertedArray =[[NSMutableArray alloc]init];

    for (int i=0; i<[manipulator count]; i++) {
        CarPart *FromManipulator=(CarPart*)[manipulator objectAtIndex:i];
        [convertedArray addObjectsFromArray:[[partFromManipulator toCars]allObjects]];
    }

    NSLog(@"Results from core data = %i",[convertedArray count]);
    return [NSArray arrayWithArray:convertedArray];
}

ここから結果を取得したときに問題が発生し、アプリで後ですべての carParts をロードする必要があります。

Car *carResult =(Cars*)[resultsConvertedToCarsArray objectAtIndex:i];

        partsFromCar =[NSMutableArray arrayWithArray:[[carResult toParts]allObjects]];

この情報が既にオブジェクトにロードされているように、元のクエリで上記をプリフェッチするにはどうすればよいですか?

これが私の元のフェッチリクエストです:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"CarParts" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
    [fetchRequest setPredicate:[self parseCarPartsIntoAPredicate:carPartsArray]];
    [fetchRequest setReturnsDistinctResults:YES];
    //I guess I would use something like this? but how would I structure it?
    [fetchRequest setRelationshipKeyPathsForPrefetching:@"I need to prefetch the toParts nsset of the cars found here (although in reality it brings up every instance of that car part, which I then have to convert into a car... something like found a car part, car for that part is a buick, what are the parts of the buick? ok, preload those parts"];

前もって感謝します!

4

2 に答える 2

-2

これらのオブジェクトを保持するために nsmanagedobject を作成しました...

于 2013-01-19T18:03:16.170 に答える