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