0

我将各种实体保存到核心数据中。每次我需要访问这些数据时,我都会从核心数据中读取数据并将所需的实体分配给一个可变数组。

if (managedObjectContext == nil) 
{ 
    managedObjectContext = [(iForgetAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
}
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil)
{
    // Handle the error.
    NSLog(@"mutableFetchResults == nil");
}
[self setEventsArray:mutableFetchResults];
[eventsTableView reloadData];

问题是,我正在从应用程序的许多不同页面中检索这些数据。

使用 Core Data 的最佳实践是什么?我应该只在 App Delegate 中加载数据并在那里分配数组吗?

非常感谢所有建议。

4

2 回答 2

1

您使用可变数组的设置已经是不好的做法。核心数据可以排序、过滤和显示,可以说比可变数组好得多。

您应该考虑使用 aNSFetchedResultsController来显示您的数据。您可以使用谓词和排序描述符进行过滤和排序。这样的解决方案应该无限地更加健壮和可扩展。

至于您关于保存的具体问题,您可以使用托管对象上下文(在您的类中保留一个引用或从应用程序委托中获取它)将该数据保存在任何地方。

于 2012-07-12T13:46:09.313 回答
1

使用NSFetchedResultsController为您提供所需的功能。确保也使用该NSFetchedResultsControllerDelegate协议。用于NSFetchRequest通过排序等进行检索。

于 2012-07-12T13:48:26.603 回答