2

ユーザーが現在のモデルをセットアップするときに、コア データ データベースをリセットしようとしています。

さまざまなオプションを試しましたが、正しく機能するものはありませんでした。

新しいデータを追加する前に、コア データとそのすべてのデータ (永続データを含む) を削除したいと考えています。

SQLite データベース ブラウザ バージョン 2.0b1 を使用して、データが正しく削除されていることを確認しています。また、各テストを実行する前にシミュレーターをリセットしました。

簡潔な解決策を探しています。stackoverflow を検索して、正しい方法を見つけました。

この解決策により、データベースは完全に削除されましたが、新しいデータベースは作成されませんでした。 https://stackoverflow.com/a/11812997/1565615

このソリューションは、以前のセッションがまだ存在し、作成されたばかりのデータであるため、すべてのデータを削除しませんでした。 https://stackoverflow.com/a/1078306/1565615

4

1 に答える 1

2

私はこのように使用しています:

  1. coreData のすべての値を削除します
  2. コンテキストを保存して、値が実際に削除されるようにします。
  3. 新しい値を保存し、コンテキストを再度保存します。

  1. 私はこのコードを使用して、各エンティティから値を削除しています:

NSError *error = nil;  

NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *fetchREntityUser            = [[[NSFetchRequest alloc] init] autorelease];
NSEntityDescription *entityUser         = [NSEntityDescription entityForName:@"EntityUser" inManagedObjectContext:context];

[fetchREntityUser           setEntity:entityUser];


NSArray *fetchedObjUser         = [context executeFetchRequest:fetchREntityUser error:&error];

if (error) {
    XLog(@"deleteCoreDataEntitys Error: %@", [error localizedDescription]);
}


for (NSManagedObject *CDentityUser in fetchedObjUser) {
    [context deleteObject:CDentityUser];
}


[context save:&error];
于 2012-08-30T10:29:23.303 に答える