• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

IOS核心数据删除无子父记录

[复制链接]
菜鸟教程小白 发表于 2022-12-12 14:01:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在为我的以用户输入数据为中心的应用程序制定“清除流程”。本质上存在一个父实体和一个子实体。如果我“滑动删除”父对象,系统会正确删除子对象。所以这部分是有效的。

现在,我要做的是检查并删除所有大于 60 岁的子对象?已标记为“已核对”的日期。将获取和删除请求放在一起应该没有问题。我不知道如何获取和删除没有子对象的父对象(早于?60?天)?

我希望我不必遍历整个集合,获取子对象的计数并将该值保存到父对象,然后用“0”删除父对象,但我想这将是我的计划 B。数据结束60 天的时间可以累积 60-100 个新父对象和 150-300 个新子对象,如果用户保持与个人工作相关的收入,则子对象通常应在创建后 1-3 周内标记为“已调和”及时处理元素。

父实体大多是字符串(大约20个属性),但也有6个左右的BOOL和十进制属性,子实体大约有6个字符串、2个十进制和1个BOOL属性。因此,如果用户没有选择性地删除任何内容,我不确定在一年的典型使用情况下,这将转化为数据库大小。

我认为归档过程中没有任何需要,因为从长远来看,这些信息并不“关键”。但是,我不能指望我的目标受众在适当的时候习惯性地手动“滑动删除”父对象,这意味着如果不实现清除过程,数据集将随着时间的推移而变大。

是否有一个简短的响应来提供 Core Data 将响应的通用方法或方法/sql 语法?还是我应该从不同的角度来解决这个问题?提前致谢。



Best Answer-推荐答案


删除子记录后,您可以执行查询以检索具有给定条件的父记录,并遍历每个返回的父记录并将其删除。以下是获取请求的样子:

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName"arentEntity"];
request.predicate = [NSPredicate predicateWithFormat"date < %@ AND children.@count == 0", olderThan60Days];
request.includesPropertyValues = NO; // don't really care about these since it's for deletion

NSError *error;
NSArray *recordsToDelete = [context executeFetchRequest:request error:&error];

执行获取请求,将返回的每个对象一个一个删除。

关于IOS核心数据删除无子父记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18563033/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap