我将各种实体保存到核心数据中。每次我需要访问这些数据时,我都会从Core数据中读取并将所需的实体分配给可变数组。
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];
问题是,我正在从应用程序中的许多不同页面检索此数据。
使用核心数据时的最佳做法是什么?我应该只在App Delegate中加载数据并在那里分配数组吗?
非常感谢所有建议。
答案 0 :(得分:1)
使用可变数组进行设置已经是不好的做法。核心数据可以进行排序,过滤和显示,可以说比可变数组要好得多。
您应该考虑使用NSFetchedResultsController
来显示您的数据。您可以使用谓词和排序描述符进行过滤和排序。这样的解决方案应该是无限可靠和可扩展的。
关于保存的具体问题,您可以使用托管对象上下文(在类中保留引用或从应用程序委托中获取)以将数据保存在任何位置。
答案 1 :(得分:1)
使用NSFetchedResultsController
为您提供所需的功能。确保还使用NSFetchedResultsControllerDelegate
协议。使用NSFetchRequest
进行排序等检索。