为了账号安全,请及时绑定邮箱和手机立即绑定

删除/重置核心数据中的所有条目?

删除/重置核心数据中的所有条目?

iOS
MYYA 2019-08-03 12:03:18
删除/重置核心数据中的所有条目?您知道有什么方法可以删除全部存储在Core数据中的条目吗?我的模式应该保持不变;我只想把它重置为空白。编辑我希望通过编程来实现这一点,这样用户就可以在reset纽扣。
查看完整描述

3 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

您可以删除SQLite文件-但是我选择通过使用函数单独清除表来做到这一点:

- (void) deleteAllObjects: (NSString *) entityDescription  {
    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];
        DLog(@"%@ object deleted",entityDescription);
    }
    if (![_managedObjectContext save:&error]) {
        DLog(@"Error deleting %@ - error:%@",entityDescription,error);
    }}

我选择逐个表这样做的原因是,它使我在编程时确认,删除表的内容是明智的,而且没有我更愿意保存的数据。

这样做比仅仅删除文件要慢得多,如果这个方法花费太长时间,我将更改为文件删除。




查看完整回答
反对 回复 2019-08-05
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

更新iOS 10+解决方案

使用NSBatchDeleteRequest删除实体中的所有对象,而不必将它们加载到内存中或迭代它们。

// create the delete request for the specified entitylet fetchRequest:
 NSFetchRequest<NSFetchRequestResult> = MyEntity.fetchRequest()let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
 // get reference to the persistent containerlet persistentContainer = (UIApplication.shared.delegate as! AppDelegate).persistentContainer
 // perform the deletedo {
    try persistentContainer.viewContext.execute(deleteRequest)} catch let error as NSError {
    print(error)}

此代码已为IOS 10和SWIFT 3更新。这个问题.

资料来源:




查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 437 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信