iPhone Core 数据实体查找

标签 iphone objective-c cocoa cocoa-touch core-data

我有一个非常简单的问题,我确信有一个简单的解决方案,但在互联网上搜索了两天后我找不到任何内容 =(

情况如下:我决定将数据分成两个具有一对一关系的独立实体。所以我有 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/

相关文章:

objective-c - 核心数据-实例变量更新中的NSManagedObjects

iphone - 当我们从 ios 中的 json 获取它时如何检查 valueOfKey 是 Array 还是 Object

iphone - 自定义 UITableViewCellEditingStyle

objective-c - 如何在导航栏的后退按钮上放置一个 View ?

objective-c - 我可以在 superView 的特定点获取 subView 吗?

objective-c - 如果链接的框架包含私有(private) header ,Xcode 项目会提示丢失文件

objective-c - 奇怪的 NSLog 行为 : NSLog displaying window controller's window

ios - 删除模态 UIView/Partial Curl 的点击识别器

iphone - UITableViewCell 突出显示时使标签的背景清晰

iphone - 在 uipopover 中时,UIButton 不响应 touchupinside