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