核心数据未正确重置数据库

时间:2012-08-30 10:21:40

标签: objective-c ios core-data

我正在尝试在用户设置当前模型时重置我的Core数据库。

我尝试了各种选项,但没有一种方法正常工作。

我希望在添加任何新数据之前删除Core数据及其所有数据(包括持久数据)。

我一直在使用SQLite数据库浏览器版本2.0b1来检查数据是否已被正确删除。我还在运行每个测试之前重置了模拟器。

我正在寻找一个简洁的解决方案,我已经搜索了stackoverflow以找到正确的方法。

此解决方案导致数据库被完全删除,但未创建新数据库。 https://stackoverflow.com/a/11812997/1565615

此解决方案未删除所有数据,因为之前的会话仍然存在,而且刚刚创建的数据。 https://stackoverflow.com/a/1078306/1565615

1 个答案:

答案 0 :(得分:2)

我正在使用它:

  1. 删除coreData中的所有值
  2. 保存上下文,因此值实际上已删除。
  3. 保存新值并再次保存上下文。

    1. 我正在使用此代码删除每个实体
    2. 中的值
      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];