gpt4 book ai didi

swift - RealmSwift ALL 谓词

转载 作者:搜寻专家 更新时间:2023-11-01 07:10:22 29 4
gpt4 key购买 nike

let selectedConsoles = ["Xbox", "Playstation 4"]
let players = realm.objects(Person).filter("consoles IN %@", selectedConsoles)

假设玩家的属性控制台是 List<console>()

所以我想过滤所有同时拥有 xbox 和 playstation 4 的玩家。目前我可以通过 OR 比较来过滤它们,我的目标是实现 AND 比较,例如目前它只检查“xbox”或“playstation 4”存在于玩家的控制台中。我想返回具有两个控制台的玩家。任何帮助或提示将不胜感激

最佳答案

要获得同时拥有这两种控制台的用户,您需要“和”他们。如果想要选择具有 EITHER 的那些,则需要将它们“或”在一起。如果你“和”他们,你必须同时拥有,否则它不会被包括在内,如果你“或”他们,如果其中一个存在,它就会被包括在内。

因此您需要创建复合“或”谓词。您为要包含的每个案例创建一个谓词,然后使用复合谓词“或”[或“和”] 将所有谓词组合在一起。

我根据您上面提供的内容做出了一些猜测,但这应该非常接近。让我知道它是否需要澄清或清理。它可以编译,但我没有为它创建测试数据集。用您的变量名(对于您的 Realm 对象)和类名替换

    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)

关于swift - RealmSwift ALL 谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45338083/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com