2010-12-13 23 views
2

私はcoredataを初めて使っています。それでも、私はそれをある程度まで理解することができ、すべてがうまくいっています。私ができなかったのは、データベース全体を消去することだけでした。iphone - coredataオブジェクトのすべてのデータを消去

どうすればよいですか?

私はViewController上にあり、データベースはデリゲートによって初期化されました。私のプロジェクトはアップルのテンプレートに基づいていました。

デリゲートによって作成された場合、データベースを消去して完全に空の状態に戻すにはどうすればよいですか?それは完全ではないと私は全体を再作成する方法について説明していないので

この「答え」 Delete/Reset all entries in Core Data?

に私を指してはご遠慮ください。それは単に物を削除する方法をカバーします。

NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 
NSString *storePath = [docDirPath stringByAppendingPathComponent:@"YourDatabaseName.sqlite"]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
if ([fileManager fileExistsAtPath:storePath]) { 
[fileManager removeItemAtPath:storePath error:NULL]; 

をそして、あなたはそれが再びアクセスしたときpersistentStoreCoordinatorがそう、それは、データベースを再初期化しますnilに設定してください:

おかげ

+0

念のために:あなたはすべてのオブジェクトを削除し、その後それらを再作成する方法を求めていますか?あなたは「私が全部をどのように再現するかはカバーしない」と言うので。 –

答えて

2

私はその答えがあなたにとって不十分である理由を正確にはわかりません。しかし、このようなストアを削除すると、NSArray * stores = [persistentStoreCoordinator persistentStores];

for(NSPersistentStore *store in stores) { 
    [persistentStoreCoordinator removePersistentStore:store error:nil]; 
    [[NSFileManager defaultManager] removeItemAtPath:store.URL.path error:nil]; 

    NSError *error = nil; 
    [persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:store.URL options:nil error:&error]; 
} 

あなたは、私が最後の行に行ったよう、バックストアを設定することができます。

[persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:store.URL options:nil error:&error]; 
+0

ありがとう!それでおしまい!!! – SpaceDog

0

ストアを削除するには、このような何かを試すことができます初めてアプリを実行していた場合

self.persistentStoreCoordinator = nil; 
+0

ありがとうございます。私はそれをして、データベースはまだそこにある。ファイルは消えていますが、データはそこにあります。それ以降はデータを簡単にチェックして、すべての値を端末に一覧表示することができました。何かがまだそれを保持している、またはリフレッシュされていません。ゼブルンの答えがそのトリックでした。とにかくありがとう。 – SpaceDog

関連する問題