爲了讓那些有兩種類型的控制檯,你需要「和」他們。你需要「或」他們在一起,如果想要那些有選擇的,還有。如果你「和」他們你必須有兩個或它不會被包括在內,如果你是「或者」他們,如果存在的話,它將被包括在內。
所以你需要創建一個複合「或」謂詞。您爲每個要包含的案例創建一個謂詞,然後使用複合謂詞將所有謂詞「或」[或「和」]結合在一起。
我根據上面提供的內容做了一些猜測,但這應該非常接近。讓我知道是否需要澄清或清理。它編譯,但我沒有爲它創建一個測試數據集。用尖括號>內的<變量替換變量名稱(用於領域對象)和類名稱。
let selectedConsoles = ["Xbox", "Playstation 4"]
let predicateOne = NSPredicate(format:"consoles IN %@", [selectedConsoles[0]])
let predicateTwo = NSPredicate(format:"consoles IN %@", [selectedConsoles[1]])
let compoundPredicateEitherConsole = NSCompoundPredicate(orPredicateWithSubpredicates: [predicateOne, predicateTwo])
let compoundPredicateBothConsoles = NSCompoundPredicate(andPredicateWithSubpredicates: [predicateOne, predicateTwo])
let results = <realm>.objects(<YourClassName>.self).filter(compoundPredicateEitherConsole)
謝謝我只是做了幾乎相同的事情,它沒有工作,我發現NSCompoundPredicate有LogicalType .and。其餘的很容易做出CompoundPredicate – ivan123
非常好!很高興你解決了它!很容易忘記NSCompoundPredicate可用。它在您需要時派上用場。 – Mozahler