2011-06-26 145 views
1

我指的是以下問題:Delete/Reset all entries in Core Data?清理出核心數據

有時在啓動時,我想清楚了我的核心 - 數據的數據庫,並重新下載一遍。我剛開始使用Core Data,因此我是Core Data的初學者。

1)的答案顯示:

NSPersistentStore *store = ...; 

我該如何獲得NSPersistentStore?我的應用程序委託不引用NSPersistentStore,只引用NSStorePersistentCoordinator。

2)我應該重建堆棧後,我運行以下(在答案)?

NSPersistentStore *store = ...; 
NSError *error; 
NSURL *storeURL = store.URL; 
NSPersistentStoreCoordinator *storeCoordinator = ...; 
[storeCoordinator removePersistentStore:store error:&error]; 
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error]; 

如果是這樣,我該如何重建堆棧?我可以只調用一個函數來做到這一點嗎?

感謝,

回答

1

爲什麼要使用NSPersistentStore?只是因爲那個職位?如果是,那麼我建議你去使用NSManagedObject。您可以簡單地通過獲取請求刪除所有核心數據,然後在其上創建for循環。它的古老風格,但對初學者來說很容易理解。這可能會幫助你:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = 
[NSEntityDescription entityForName:entityDescription inManagedObjectContext:managedObjectContext]; 

[fetchRequest setEntity:entity]; 

NSError *error; 
NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 
[fetchRequest release]; 


for (NSManagedObject *managedObject in items) { 
    [managedObjectContext deleteObject:managedObject]; 

} 
if (![managedObjectContext save:&error]) { 

} 

快樂編碼..!