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