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

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

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

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

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

您可以删除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-07-12
?
回首忆惘然

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

更新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-07-12
  • 3 回答
  • 0 关注
  • 543 浏览

添加回答

举报

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