Xcode加载核心数据滞后

时间:2012-07-19 17:53:19

标签: iphone core-data

我在核心数据中保存了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]

等条件从核心数据加载

OR(可能更合适)有一个单独的类,可在应用程序启动时加载数据。然后我可以访问用于当前页面的类数组(加载的数据)。然后,如果我保存,编辑或删除对象,只需重新加载数据。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

  1. 你的第一个问题,你应该看看MagicalRecord将Ruby on Rails的Active Record带到CoreData。它将缩短您的核心数据代码。

  2. 请注意,如果您的图片不小,您应该将它们存储在与您的主要实体有关系的单独实体上。这应该可以帮助您解决滞后问题,因为只有当您明确要求时才会通过关系加载图像。你可以看到here Marcus Zarra的答案(写了一本关于核心数据的好书)。总有一个选项可能是您的图片对于核心数据来说太大了。

  3. 希望有所帮助