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])
}
}