从核心数据中的数组获取具有关系的实体

时间:2014-12-01 21:28:11

标签: ios objective-c xcode core-data swift

我有一个名为Image的实体,它与名为Tag的实体有很多关系。enter image description here

假设我有一个Tag实体数组[tag1,tag2,tag3] 如何获取所有标记包含阵列中所有标记的图像?

1 个答案:

答案 0 :(得分:1)

有这些不同的案例:

-1。列表中任何标记的所有图像

NSPredicate(format:"ANY tags in %@", list)

-2。所有标签都在列表中的所有图像

NSPredicate(format:"SUBQUERY(tags, $tag, $tag IN %@).@count = %d", 
        list, countElements(list))

-3。所有图像中标签至少包含列表中的所有图像(但可能还有更多)

这最后一个问题有两种可能性。一个涉及子查询,但您也可以使用复合谓词。

var subPredicates = [NSPredicate]()
for tag in tagList {
   subPredicates.append(NSPredicate(format:"ANY tags = %@", tag))
}
NSCompoundPredicate.andPredicateWithSubpredicates(subPredicates)