使用Realm谓词无法实现目标,因为Realm使用时有很多限制,
Predicates并且缺少处理计算属性的能力,但是您可以将这种方式用作工作环境
let filterList = ["A","B"] let realmList = realmInstance?.objects(MyDTO.self) let filteredArray = Array(realmList!).filter({Array($0.tags).map({$0.tagName}).sorted().joined().contains(filterList.sorted().joined())})在这里,
Array($0.tags).map({$0.tagName}).sorted().joined()我们得到了标签数组,并使用map将其转换为字符串数组,然后对字符串数组进行排序(这将确保仅关系数组中的TAGS而不是顺序),然后将已排序的数组转换为字符串例如,您的tag.tagName数组是[“B”,“ A”,“ C”],此后,您将获得“ ABC”作为STRING
之后,我们检查STRING是否包含您的filterList.sorted()。joined(),该过程与之前说明的相同
因此,如果您的filterList具有[“ B”,“ C”,“ A”],您将获得“ ABC”
并且我们检查“ ABC”是否包含“ ABC”(如果有的话)是否包含在最终结果中



