我在核心数据中保存了 3 个实体。我在应用程序的几个视图控制器中加载这些 - 有时从所有 3 个视图控制器中加载数据。下面是我如何加载这些数据并将其分配给一个数组。一旦它在数组中,然后我根据应用程序的当前页面进行排序、过滤、计数或我需要做的任何事情。
if (managedObjectContext == nil)
{
managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
[request setReturnsObjectsAsFaults:NO];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil)
{
// Handle the error.
NSLog(@"mutableFetchResults == nil");
}
[self setEventsArray:mutableFetchResults];
我遇到的问题是:
- 我不喜欢有很多重复的代码——这出现在每个需要核心数据的视图控制器上。
- 从一个实体中,我正在保存图像的二进制数据,这在我加载该数据时会导致延迟
那么,有没有办法使用以下条件从核心数据加载eventId = [NSString stringWithFormat:@"%@", currentEventId]
或者(可能更合适)有一个单独的类,在应用程序启动时加载数据。然后我可以访问(加载的数据的)类数组以用于当前页面。然后,如果我保存、编辑或删除对象,只需重新加载数据。
任何帮助深表感谢。