Core data NSPredicate返回属性包含在数组中的项

Core data NSPredicate返回属性包含在数组中的项,core-data,Core Data,我有一个年/月元组数组: [(2015,11)、(2015,12)、(2016,1)、(2016,2)、(2016,3)、(2016,4)、(2016,5)、(2016,6)、(2016,7)、(2016,8)、(2016,9)] 在我的CoreData ManagedObjectModel中,我有一个MonthlyReport实体,它具有year和month属性(Int16) 我正在试图找到一种有效的方法来获取所有模型,其中年份和月份属性与数组中的元组匹配 我尝试了以下方法(使用唯一值数组的u

我有一个年/月元组数组:

[(2015,11)、(2015,12)、(2016,1)、(2016,2)、(2016,3)、(2016,4)、(2016,5)、(2016,6)、(2016,7)、(2016,8)、(2016,9)]

在我的CoreData ManagedObjectModel中,我有一个MonthlyReport实体,它具有
year
month
属性(Int16)

我正在试图找到一种有效的方法来获取所有模型,其中年份和月份属性与数组中的元组匹配

我尝试了以下方法(使用唯一值数组的
uniqueYears
uniqueMonths
):

但这不起作用;应用程序崩溃,消息
谓词($name\u列表中的$name)

现在,我一直在抓取然后手动过滤所有模型,这远远不够高效


任何建议或建议都将不胜感激

要做到这一点并非易事。您需要构建一个相当复杂的谓词来查找组合。大概是这样的:

var predicate: NSPredicate
for tuple in incomingTuples {
  let singlePredicate = NSPredicate("year == %@ AND $month == %@", tuple.0, tuple.1)
  if predicate == nil { 
    predicate = singlePredicate 
  } else {
    predicate = NSCompoundPredicate(orPredicateWithSubpredicates: [predicate, singlePredicate])
  }
}

我怀疑这将是一个昂贵的SQL查询。

您是指
还是用子谓词预测?
var predicate: NSPredicate
for tuple in incomingTuples {
  let singlePredicate = NSPredicate("year == %@ AND $month == %@", tuple.0, tuple.1)
  if predicate == nil { 
    predicate = singlePredicate 
  } else {
    predicate = NSCompoundPredicate(orPredicateWithSubpredicates: [predicate, singlePredicate])
  }
}