0
处理我的应用程序中涉及过滤发送到tableview的对象的一部分。我曾尝试使用CompoundNSPredicate,但结果没有显示。如果我分别执行每个过滤器,我可以为一种类型的对象调用fetchrequest,但是当我尝试使用第二行在相同的循环条件下调用第二种类型的对象时,第二个对象完全不会出现。例如,对于我所在的地方:过滤多个条件下的核心数据对象
let fetchRequest = NSFetchRequest(entityName: "Cards")
let warriorpredicate = NSPredicate(format: "cardClass = %i", 1)
let shamanpredicate = NSPredicate(format: "cardClass = %i", 2)
let roguepredicate = NSPredicate(format: "cardClass = %i", 3)
let paladinpredicate = NSPredicate(format: "cardClass = %i", 4)
let hunterpredicate = NSPredicate(format: "cardClass = %i", 5)
let druidpredicate = NSPredicate(format: "cardClass = %i", 6)
let warlockpredicate = NSPredicate(format: "cardClass = %i", 7)
let magepredicate = NSPredicate(format: "cardClass = %i", 8)
let priestpredicate = NSPredicate(format: "cardClass = %i", 9)
let minionpredicate = NSPredicate(format: "cardClass = %i", 10)
let sortDescriptor = NSSortDescriptor(key: "name", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
if ((passedDeckObject?.classSelected.classname = "Warrior") != nil) {
fetchRequest.predicate = warriorpredicate
} else {
if ((passedDeckObject?.classSelected.classname = "Shaman") != nil) {
fetchRequest.predicate = shamanpredicate
fetchRequest.predicate = minionpredicate
} else {
if ((passedDeckObject?.classSelected.classname = "Rogue") != nil) {
fetchRequest.predicate = roguepredicate
}
if ((passedDeckObject?.classSelected.classname = "Paladin") != nil) {
fetchRequest.predicate?.isEqual(paladinpredicate)
fetchRequest.predicate?.isEqual(minionpredicate)
} else {
if ((passedDeckObject?.classSelected.classname = "Hunter") != nil) {
fetchRequest.predicate?.isEqual(hunterpredicate)
fetchRequest.predicate?.isEqual(minionpredicate)
} else {
if ((passedDeckObject?.classSelected.classname = "Druid") != nil) {
fetchRequest.predicate?.isEqual(druidpredicate)
fetchRequest.predicate?.isEqual(minionpredicate)
} else {
if ((passedDeckObject?.classSelected.classname = "Warlock") != nil) {
fetchRequest.predicate?.isEqual(warlockpredicate)
fetchRequest.predicate?.isEqual(minionpredicate)
} else {
if ((passedDeckObject?.classSelected.classname = "Mage") != nil) {
fetchRequest.predicate?.isEqual(magepredicate)
fetchRequest.predicate?.isEqual(minionpredicate)
} else {
if ((passedDeckObject?.classSelected.classname = "Priest") != nil) {
fetchRequest.predicate = priestpredicate
}
}
}
}
}
}
}
}
return fetchRequest
}
某些代码看上去不同,但是那是因为我在每一个不同的线我给使用我试图左右逢源减去compoundpredicate尝试这表明什么都没有实例测试。
所以,如果类名是萨满,例如,你想与cardClass = 2,选择卡片或10? – pbasdf
正确!这就是我正在寻找的! – Matthew
你在NSCompoundPredicate的正确路径上:'fetchRequest.predicate = NSCompoundPredicate.orPredicateWithSubpredicates(shamanpredicate,minionpredicate)'work? – pbasdf