0

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

4

1 回答 1

1

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

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

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

[allAddresses valueForKeyPath:@"attributeName"];

您也可以直接将获取请求的resultType属性设置为NSDictionaryResultType并指定propertiesToFetch.

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

for (Deal *deal in allDeals) {
   NSSet *allLongitudesInAddresses = 
             [deal.addresses valueForKeyPath:@"longitude"];
   // do something with the attributes
}
于 2013-01-25T01:11:46.620 回答