我有一個簡單的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