2013-01-11 30 views
0

我一直在整天努力解決我發現的錯誤,該錯誤是NSInternalInconsistencyException錯誤。我收到的錯誤控制檯消息是 「此NSPersistentStoreCoordinator沒有持久性存儲,它不能執行保存操作。」我也得到「執行被中斷,原因:EXC_BAD_ACCESS(代碼= 1,地址= 0x1)」。NSInternalInconsistencyException:無法獲取NSPersistentStore來啓動或創建商店

我在我的應用程序委託下面的代碼:

- (void)saveContext 
{ 
    NSError *error = nil; 
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext; 
    if (managedObjectContext != nil) { 
     if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { 

      NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
      abort(); 
     } 
    } 
} 

#pragma mark Core Data stack 

- (NSManagedObjectContext *)managedObjectContext { 

    if (_managedObjectContext != nil) { 
     return _managedObjectContext; 
    } 

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
    if (coordinator != nil) { 
     _managedObjectContext = [[NSManagedObjectContext alloc] init]; 
     [_managedObjectContext setPersistentStoreCoordinator: coordinator]; 
    } 
    return _managedObjectContext; 
} 

- (NSManagedObjectModel *)managedObjectModel { 

    if (_managedObjectModel != nil) { 
     return _managedObjectModel; 
    } 
    _managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; 
    return _managedObjectModel; 
} 

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{ 
    if (_persistentStoreCoordinator != nil) { 
     return _persistentStoreCoordinator; 
    } 

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"shindy.sqlite"]; 

    NSError *error = nil; 
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 

    return _persistentStoreCoordinator; 
} 


#pragma mark Application's documents directory 

- (NSURL *)applicationDocumentsDirectory 
{ 
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]; 
} 

我已經throughly閱讀了關於類似這樣的其他問題,看來我的代碼是一致的,我不應該有這個問題。然而,我...

我已經嘗試清洗&刪除應用程序並重新安裝。我在模擬器上的設備&上嘗試了該應用程序。我將附加的URLPath名稱「shindy.sqlite」更改爲我之前沒有使用的各種名稱。我也嘗試在我的applicationDidFinishLaunching方法中強制實例化[self saveContext];,試圖讓我的應用創建商店。

我所有的解決問題的嘗試都只是簡單地返回相同的錯誤。我不知道還有什麼要嘗試。

+0

您是否嘗試清理項目,將其從模擬器/設備上刪除,然後運行? –

+0

您是否嘗試清潔項目,然後將其從手機/模擬器上刪除? –

+0

是的,我做到了。我忘了包括我嘗試過的。 – jakenberg

回答

0

我終於搞清楚我做錯了什麼。不幸的是,對你們大多數人來說這可能不會有太大的幫助,因爲這是我犯的一個愚蠢的錯誤。

我正在對App Delegate中的URL進行正常的「附加」操作。然後在將加載的第一個視圖控制器中再次「追加」。這導致我的代碼在已經創建的sqlite文件夾上追加一個名字。