【发布时间】:2012-10-21 06:27:11
【问题描述】:
我正在我的一个应用程序中运行数据模型,其中一个事件定义了“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];
}
}
}
感谢您查看我的问题!
【问题讨论】:
标签: iphone objective-c caching core-data nsmanagedobject