我在玩,學習CoreData,以及以UITableView作爲根的測試應用程序時,它顯示數據正常。這會告訴我它正在從中提取數據的數據庫設置正確。試圖讓我的CoreData在我的應用程序中顯示
現在我想有一個UIViewController作爲初始視圖控制器(通過故事板),它不斷給我這個錯誤 -
創建NSPersistentStoreCoordinator不能用零模型
現在我已經讀了很多論壇和教程的,他們都基本上說,我要確保我的xcdatamodel文件這個
URLForRe匹配來源:@「Model」withExtension:@「momd」]
它的確如此,如果UITableView是根視圖,我可以再次顯示數據。
現在,如果我改變:
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel != nil)
{
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
成這樣:
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel != nil)
{
return __managedObjectModel;
}
//NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"]; // I have commented out this line because the NSURL is no longer being used.
__managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
return __managedObjectModel;
}
的應用程序運行,但的TableView是空的,這對我來說很有意義,因爲我不鏈接到CoreData文件。 - 問題是 - 我如何使用安裝程序運行應用程序並顯示數據?
乾杯傑夫
@應答先回答由傑夫·沃爾斯基
感謝您的回答,我覺得我是在正確的道路上 - 我不得不稍微改變它到我的項目刪除錯誤。我知道有
AppDelegate appDelegate = (AppDelegate) [[UIApplication sharedApplication] delegate];
所以我就把這是
- (NSManagedObjectModel *)managedObjectModel {
區 - 是正確的?另外它現在已經拿出appDelegate變量未使用的警告。可能是一個簡單的問題,但我現在在哪裏使用該變量?乾杯傑夫
我已經發布了什麼,我認爲是你是什麼@Jody Hagins後 - 希望它可以幫助:-)
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator != nil)
{
return __persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"ViewToNav.sqlite"];
NSError *error = nil;
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return __persistentStoreCoordinator;
}
乾杯傑夫
你的persistentStoreCoordinator()是什麼樣的? – 2012-04-14 02:52:50
嗨喬迪,我已經添加了更多的代碼,我認爲你問:-) – 2012-04-14 06:15:42
你在這裏訪問應用程序委託的代碼是錯誤的..你甚至沒有使用指針......這是正確的傑夫的帖子。再去看看那裏。另外,我認爲你應該看一下蘋果生成的代碼,因爲我認爲你很困惑。簡單的方法:在Xcode中,選擇New Project,然後選擇Master-Detail並檢查CoreData項目。它會創建一個項目,如何做到這一點很好的例子。 – 2012-04-14 06:28:14