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

iOS核心数据如何从不同实体访问单个实体

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

我有一个这样的模型:

enter image description here

如何使"file"实体可以被 Entity1 或 Entity2(或 Items)引用

基本上,我有许多带有 id 的"file"。如果对"file"进行了更改(例如更改了名称),那么当任何实体引用该文件时,它应该具有更新的信息......而不必在每个实体中进行更新。

有没有办法通过编辑器做到这一点?还是我必须编写代码来首先获取我正在寻找的文件 id,然后在获得文件 id 后,使用我刚刚获得的 id 对"file"实体进行单独的请求?

在 sql 中,我可以从任何表进行左连接。如果可以在谓词中执行,那也可以,只是不确定如何。

编辑:

所以我更新了我的模型,现在它看起来像这样:

enter image description here

我为"file"添加了数据,然后为 Entity1 和 Entity2 添加了数据

我有用于显示文件的代码,然后是用于显示实体的代码。 这是我正在做的一个片段:

NSEntityDescription *entityDescription = [NSEntityDescription
                                          entityForName"Entity1" inManagedObjectContext:context];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];

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

[entityArray enumerateObjectsUsingBlock:^(Entity1 *entity1, NSUInteger idx, BOOL *stop) {
    NSLog(@"entity1: %@", entity1.name);
}];

我现在如何从文件中获取 Entity1 的“名称”?让我们假设名称字段是一个匹配字段。我需要在代码中添加什么来提取"file"?这是假设在“Entity1”当然存在之前"file"就在那里。

我目前正在运行另一种类似于“getFileByNameNSString *)name”的方法,并使用谓词执行单独的请求。这行得通,但我认为有更好的方法。



Best Answer-推荐答案


您可以简单地为想要引用它们的任何其他实体创建与 Files 实体的关系(具有您想要的基数)。

请记住,虽然 Files.id 是唯一的,但 CoreData 提供的唯一性是 objectID ==> 您可以替换 id 引用文件 objectID 并获得相同的功能。

一些建议:

  1. 不要使用id作为属性名,它是Objective-C中的保留字
  2. 不要以复数形式命名您的实体(例如 Files --> File)它们是对象定义或类(不要用术语来思考表,尽管这可能是底层结构)

关于iOS核心数据如何从不同实体访问单个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21742933/

回复

使用道具 举报

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

本版积分规则

关注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