Car オブジェクトを作成し、toParts というリレーションシップ (この車のすべての車のパーツのセットを持っています) があり、別の車を作成すると、toParts セットが複製されますか?
コア データに追加: car a = (toParts = ホイール、タイヤ、シート)
コア データに追加: car b = (toParts = ホイール、タイヤ、シート)
CarParts.h (name 属性あり)
Carparts = wheel、wheel、tyre、tyre、seat、seat を持っていますか? その場合、複製が必要ですか? 将来のすべての車を同じホイール インスタンスにポイントする方法はありますか (1000 台ではなく)。
前もって感謝します
編集された追加コード:
これは、現在結果を取得するために使用しているコードです。重複のリスクを取得し、carParts ではない車の最後の配列を取得しようとしていました (しかし、carPart で検索したい)
-(NSArray*) loadCarsFromCoreDataUsingCarParts:(NSMutableArray*)inputCarParts{
NSLog(@"carParts =%@",inputCarParts);
NSFetchRequest *fetchRequest =[[NSFetchRequest alloc]init];
//To find the Cars we are using the carParts
NSEntityDescription *entity = [NSEntityDescription entityForName:@"CarPart" inManagedObjectContext:[self managedObjectContext]];
//sets up fetch request details
[fetchRequest setEntity:entity];
//3 here signifies it is an ingredient search
[fetchRequest setPredicate:[self parseSearchObjectsIntoAPredicate:inputCarParts:3]];
//don’t understand these results so comment out
//[fetchRequest setReturnsDistinctResults:YES];
//[fetchRequest setResultType:NSDictionaryResultType];
//attempt to preload the nsset containing the cars (just one each time for some reason
[fetchRequest setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"ToCar", nil]];
//Perform fetch
NSError *error;
NSArray *records = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
//I have to do this to get the results finally as cars NOT individual instances of car parts
return [self convertToCars:records];
}
-(NSArray*)convertToCars:(NSArray*)records{
NSMutableArray *manipulator =[NSMutableArray arrayWithArray:records];
NSMutableArray *convertedArray =[[NSMutableArray alloc]init];
for (int i=0; i<[manipulator count]; i++) {
//regular way
CarPart *partFromManipulator=(CarPart *)[manipulator objectAtIndex:i];
[convertedArray addObjectsFromArray:[[ partFromManipulator toCar]allObjects]];
}
NSLog(@"Results from core data = %i",[convertedArray count]);
return [NSArray arrayWithArray:convertedArray];
}