我有一个简单的XCode CoreData启用的iPhone/iPad导航应用程序。在这里,我修改了它最初定义的数据,以便在表格视图中用关联的图像表示一些类别。例如通过修改事件类别的其他地方,改变.xcdatamodel文件,并在RootController.m改变这一呼吁:CoreData:从XML加载到初始数据集中
- (void)configureCell:(DeliciousCategoryCell *)cell atIndexPath:(NSIndexPath *)indexPath {
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.categoryLabel.text = [[managedObject valueForKey:@"name"] description];
NSString *filePath = [[NSBundle mainBundle] pathForResource:cell.categoryLabel.text ofType:@"tiff"];
cell.categoryImage.image = [[UIImage alloc] initWithContentsOfFile:filePath];
}
如果我通过把代码预加载从XML文件中的数据:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
数据正常加载,但应用程序随后随EXC_BAD_ACCESS一起崩溃。如果我将这些代码从应用程序加载出来,我的数据就会出现,并且我的类别可以与关联的本地图像一起显示。我试着在别处移动有问题的代码,如:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
和检查,以确保数据为空但它仍然崩溃尚未加载数据。我似乎无法通过调试器追踪EXC_BAD_ACCESS的原因,因为堆栈跟踪没有有用的信息。我想知道的是对以下内容的回答,因为我在苹果文档中找不到它:
1)当这种基于核心数据的应用程序首次启动时,应该在初始数据集中加载的调用去哪儿?我会理想地通过网络做到这一点,但我目前只是打开一个本地XML文件进行测试。
2)核心数据加载完成后,我想让用户通过合并来更新核心数据信息。这些代码应该放在哪里?
我没有问题的逻辑只是必要的代码afaict的位置。如果有人愿意提供我在做什么的清单,我会提供,但它相当冗长。所实现的代码直接来自两个苹果教程。后者详细说明如何在数据库中不加载提取/选择的情况下加载数据,但是所述教程没有提及任何关于的地方,其中它应该驻留。
您可以提供指向您复制的代码的链接。这会让阅读更容易。 – TechZen 2010-07-24 13:12:25
如果您还没有,可以考虑查看TopSongs示例项目,该示例项目演示如何使用NSOperation的子类在另一个线程上导入xml。在他们的示例中,此导入器是在-applicationDidFinishLaunching中创建的: 尽管这并不完全符合您希望执行的操作,但您可以轻松修改它以仅启动导入一次。 – 2010-07-24 13:12:31
谢谢Darryl。我还没有看到这个例子,尽管最近发现了一个让我在一个应用程序中查看了tabview +导航视图+模态对话的优秀视图。我3周前需要的东西! http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/: 链接到有问题的代码创建一个简单的项目,滴答核心数据复选框+这里找到两个文章/cdImporting.html#// apple_ref/doc/uid/TP40003174-SW1 http://www.techotopia.com/index.php/Working_with_iPhone_Databases_using_Core_Data 和几页自定义单元格视图。 – Diziet 2010-07-26 11:56:55