如何获取相关实体的特定属性?

时间:2013-01-24 19:29:43

标签: ios core-data

在我的应用中,我有两个实体:交易和地址。它们通过多对多关系连接起来。地址实体有许多属性 - 纬度和经度是其中两个。是否可以获取所有Deal对象及其相关的Address对象,以便仅检索Address对象的某些属性(纬度和经度)?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您不想过滤获取结果。您需要所有交易,然后只需要关联地址的属性的子集。

从您的问题中不清楚您想如何使用这些结果。地址实体的属性是否仍然必须与相应的交易实体相关联?

如果没有,您可以简单地获取所有地址实体并获取所需的属性。因为Core Data将通过仅获取所需的属性来帮助您管理内存,所以您只需获取整个对象即可。然后可以按如下方式轻松生成所有实例的属性数组:

[allAddresses valueForKeyPath:@"attributeName"];

您还可以直接将获取请求的resultType属性设置为NSDictionaryResultType,并在propertiesToFetch中指定属性。

另一种情况是您不希望交易和地址之间的关系破裂。在这种情况下,只需获取所有交易(Core Data将使用 faulting 来减少内存占用)。然后,您可以遍历结果并轻松获取每个属性。

for (Deal *deal in allDeals) {
   NSSet *allLongitudesInAddresses = 
             [deal.addresses valueForKeyPath:@"longitude"];
   // do something with the attributes
}