アプリの1つでデータモデルを実行しています。このモデルでは、イベントに「eventType」関係が定義されています。これにより、「eventType」リレーションシップオブジェクトを変更することで、複数のイベントのルックアンドフィールを変更できます。
私が遭遇している問題は、イベントを挿入する前に、このオブジェクトのtypeRelationshipが以下のコードで存在するかどうかを確認することです。多数のオブジェクトを挿入する必要がある場合、これには時間がかかります。
このフェッチ要求の結果を(たとえばでNSMutableDictionary
)キャッシュし、そのディクショナリ(ローカルメモリ)をチェックしNSManagedObject
て、指定されたでが存在するかどうかを確認できEventIDEnum
ますか?キャッシュを永久に存続させることはできますか、それとも、基になるオブジェクトがしばらくすると「古くなる」のでしょうか。
-(Event*)insertAndReturnNewObjectWithTypeID:(EventIDEnum)eventTypeID date:(NSDate*)date
{
NSFetchRequest *eventTypesArray = [NSFetchRequest fetchRequestWithEntityName:@"EventType"];
eventTypesArray.predicate = [NSPredicate predicateWithFormat:@"SELF.id == %d", eventTypeID];
NSArray *eventTypes = [[DataManager sharedInstance].managedObjectContext executeFetchRequest:eventTypesArray error:nil];
if(eventTypes.count==0)
{
DLog(@"ERROR inserting event with type: %i NOT FOUND",(int)eventTypeID);
return nil;
}
else {
if(eventTypes.count !=1)
{
DLog(@"ERROR found %i events with type %i",eventTypes.count,(int)eventTypeID);
}
EventType* eventType = [eventTypes lastObject];
if(date)
{
// DLog(@"Returning object");
return [self insertAndReturnNewObjectWithEventType:eventType date:date];
}else {
// DLog(@"Returning object");
return [self insertAndReturnNewObjectWithEventType:eventType];
}
}
}
私の質問を見てくれてありがとう!