【问题标题】:Fetch Entities with Relationship From Array in Core Data从核心数据中的数组中获取具有关系的实体
【发布时间】:2014-12-01 21:28:10
【问题描述】:

我有一个名为 Image 的实体,它与一个名为 Tag. 的实体具有一对多关系。

假设我有一个标签实体数组 [tag1, tag2, tag3] 如何从数组中获取所有标签包含所有标签的图片?

【问题讨论】:

  • 您是否尝试将谓词添加到您的 NSFetchRequest 中?

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


【解决方案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)

【讨论】:

  • 所以这将过滤掉所有标签集中包含来自 tagArray 的所有标签的图像?
  • 否,使用ANY 获取将获取列表中至少有一个标签的图像。我将代码更改为使用ALL。现在它将获取列表中标签为 all 的图像。还是您想要具有完全相同标签列表的图像?
  • 我的行为有点奇怪。通过使用 ANY 我没有得到预期的结果并使用 ALL 我得到以下错误: Unsupported predicate ALL tags IN
  • 我在使用 ALL 时仍然遇到错误,但我认为 subPredicates 应该可以解决问题
猜你喜欢
  • 1970-01-01
  • 2011-02-14
  • 2013-12-09
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
相关资源
最近更新 更多