我有一个这样的模型:
如何制作,以便Entity1或Entity2(或Items)可以引用“files”实体
基本上我有很多带有id的“文件”。如果对“文件”(例如更改的名称)进行了更改,那么当任何实体引用该文件时,它应该具有更新的信息......而不必在每个实体中进行更新。
有没有办法从编辑器中执行此操作?或者我是否必须编写代码以首先获取我正在寻找的文件ID,然后一旦我有文件ID,使用我刚刚获得的ID单独请求“文件”实体?
在sql中,我可以从任何表中执行左连接。如果可以在谓词中做,那也会有用,只是不确定如何。
编辑:
所以我更新了我的模型,现在它看起来像这样:
我添加了“文件”的数据,然后为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);
}];
我如何从File for Entity1获取'name'?让我们假装名称字段是匹配字段。我需要在代码中添加什么才能获取“文件”?这假设在“Entity1”当然存在之前就存在“文件”。
我正在运行另一个类似于“getFileByName:(NSString *)name”的方法,并使用谓词执行单独的请求。这有效,但我认为有更好的方法。
答案 0 :(得分:4)
您可以简单地为Files
实体创建与任何其他想要引用它们的实体的关系(具有您想要的基数)。
请注意,虽然Files
。id
是唯一的,但CoreData提供的唯一性是objectID
==>您可以将id
引用替换为文件objectID
并获得相同的功能。
一些建议:
id
用作属性名称,它是Objective-C Files
- > File
)它们是对象定义或类(不要考虑表格,尽管这样可能是基础结构)