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 回答