2015-05-04 76 views
0

我正在使用Microsoft Azure Web服務創建應用程序。在單擊註銷按鈕時,我需要完全清除本地核心數據庫,並且在使用相同的用戶名和密碼重新登錄後重新加載所有數據。要刪除的核心數據,我用下面的方法此NSPersistentStoreCoordinator沒有持久性存儲(未知)。它無法執行保存操作

- (void) resetApplicationModel { 
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSManagedObjectContext *context = delegate.managedObjectContext; 

for (NSPersistentStore *store in delegate.persistentStoreCoordinator.persistentStores) { 
    NSError *error; 
    NSURL *storeURL = store.URL; 
    NSLog(@"storeURL: %@", storeURL); 
    NSPersistentStoreCoordinator *storeCoordinator = delegate.persistentStoreCoordinator; 
    [storeCoordinator removePersistentStore:store error:&error]; 
    [[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error]; 

    NSLog(@"There are errors: %@", error); 
} 

delegate.persistentStoreCoordinator = nil; 
context = nil; 
delegate.managedObjectModel = nil; 
} 

這是刪除我的所有數據,但是當我試圖不關閉它給我下面的錯誤

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores (unknown). It cannot perform a save operation.' 

這是發生在應用程序重新登錄因爲在刪除數據時,我將persistentStoreCoordinator設置爲nil,並且它的實例正在AppDelegate文件中創建。有人可以爲我提供任何解決方案嗎?

感謝您的幫助提前。

+0

要檢查,你想要達到的是刪除所有數據? – andrewbuilder

+0

對不起。我無法正確理解你。我所得到的是,我想在這裏實現數據刪除。 – Arti

回答

0

您的代碼有許多錯誤。

無論如何,以達到你所需要的,試試你的方法resetApplicationModel的這款改裝版...

- (void) resetApplicationModel { 
    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
// NSManagedObjectContext *context = delegate.managedObjectContext; 

    for (NSPersistentStore *store in delegate.persistentStoreCoordinator.persistentStores) { 
     NSError *error; 
     NSURL *storeURL = store.URL; 
     NSLog(@"storeURL: %@", storeURL); 
//  NSPersistentStoreCoordinator *storeCoordinator = delegate.persistentStoreCoordinator; 
//  [storeCoordinator removePersistentStore:store error:&error]; 
     [[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error]; 

     NSLog(@"There are errors: %@", error); 
    } 

// delegate.persistentStoreCoordinator = nil; 
// context = nil; 
// delegate.managedObjectModel = nil; 
} 

意圖被刪除的那個被註釋掉的代碼行。

+0

我想在用戶點擊註銷按鈕時完全刪除我的核心數據庫。通過根據您的建議評論這些行,它不會刪除我的本地數據庫。因此,如果可能的話,請如何改進上面的代碼以完全刪除數據。 – Arti

+0

看來你不瞭解核心數據。 [「Core Data框架爲與對象生命週期和對象圖管理相關的常見任務(包括持久性)提供了通用的自動化解決方案。」](https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ CoreData/Articles/cdTechnologyOverview.html#// apple_ref/doc/uid/TP40009296-SW1)刪除正在刪除數據庫的持久性存儲。似乎沒有理由將核心數據框架設置爲零。 – andrewbuilder

+0

我明白這部分是刪除您要刪除數據庫的持久性存儲。但是通過將storeURL.path設置爲零來實現同一側,它不會刪除本地數據庫中的所有條目。 – Arti

相關問題