我有一个非常简单的问题,我确信有一个简单的解决方案,但在互联网上搜索了两天后我找不到任何内容 =(
情况如下:我决定将数据分成两个具有一对一关系的独立实体。所以我有 PERSON 实体和 FEATURES 实体。每个 PERSON 都有一个相关的 FEATURES 实体,其中 person_id 指向 PERSON。
那么如何从与特定人物相关的特征中获取数据呢?我没有找到任何与关系 ID 相关的谓词
我唯一能想到的就是在 FEATURES 上创建一个 person_name 属性,然后执行以下操作: predicateWithFormat:@"person_name = 'Bill'"
但这是否违背了建立关系的目的?
那么我如何根据关系来获取?
最佳答案
听起来您有关系数据库背景。您应该将从 FEATURE 到 PERSON 的关系存储在关系中,而不是属性中(您可能已经这样做了,但您的命名 person_id
让我怀疑;标准的核心数据约定是命名该关系person
及其逆feature
)。假设是这种情况,您可以使用如下谓词格式
NSManagedObject *person ... //the person instance you want to search against
NSPredicate *p = [NSPredicate predicateWithFormat:@"self.person == %@", person];
当然,您应该定义反向关系(PERSON=>FEATURE),在这种情况下您可以这样做
NSManagedObject *feature = person.feature;
假设您将该关系命名为功能
。 Core Data 使用逆关系来维护对象图的一致性。它们的存储空间很小,但拥有它们的好处却很大;如果没有真正充分的理由,您应该始终为核心数据模型中的所有关系定义逆关系。
关于iPhone Core 数据实体查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3945429/