【发布时间】:2018-03-15 08:13:37
【问题描述】:
我的领域对象中有这个属性
var tags = List<Tag>()
"tags": [
{
"tagId": "80069",
"tagName": "A"
},
{
"tagId": "80070",
"tagName": "B"
},
{
"tagId": "80071",
"tagName": "C"
},
{
"tagId": "80073",
"tagName": "D"
}
]
我有一个可以过滤掉标签的视图控制器。
所以我有几个按钮来切换过滤器。我所做的是为每个按钮的过滤器创建一个数组
var filteredList = [String]()
所以,如果我单击按钮 A,它会将“A”附加到过滤列表数组,如果我单击按钮 B,它将附加“B”到过滤列表数组,依此类推
目前这是我的过滤谓词
let realmFilteredList = self.realm.objects(MyDTO.self).filter("ANY tags.tagName IN %@", self.filteredList)
但是,上面的谓词给了我错误的结果,因为如果假设我想过滤带有属性“A、B、C、D”(确切的 ABCD)的标签,它将返回包含 A、B 的其他标签,C 或 D。
如何在我的搜索谓词中获得带有精确“A、B、C、D”的标签?
非常感谢您提供的任何帮助。
【问题讨论】:
-
您是否要过滤您的
MyDTO对象内的标签列表的结果? -
您的标签订单是否相关?我的意思是 ABCD 和 BCDA 一样吗?
-
好吧,Realm 在使用 Predicates 时有很多限制,但如果您有兴趣,可以使用变通方法使其工作,让我知道我已经为此完成了一个可行的解决方案
-
@ReinierMelian 您好,订单没有问题。只要 self.filteredLitst = ['A','B','C','D'] 将返回也包含精确 ['B','A','C','D'] 的领域结果也可以接受:)。只要4个过滤标签相同