ios - 快速过滤领域列表
问题描述
class RetailerModel: BaseResponse {
var customFields = List<CustomFieldsModel>()
}
class CustomFieldsModel: BaseResponse {
@objc dynamic var params : ParamsModel?
}
class ParamsModel: BaseResponse {
var options = List<String>()
}
我正在使用领域来获取数据, RetailerModel有一个 CustomFieldsModel 对象,CustomFieldsModel有一个ParamsModel 对象,ParamsModel包含我想要过滤我的 RetailerModel 数据的数组
这是来自 json 的数组,ParamsModel包含 "options": ["custom", "Towers"]
我想要的只是具有“自定义”选项的所有 RetailerModel 的列表
解决方案
这是一个非常具有挑战性的查询,但我想我有一个解决方案。
然而,首先;领域列表中的原语没有得到很好的支持,并且还不能查询。请参阅此处和此以获取更多信息。
编辑: 10.7 版增加了对过滤器/查询以及原语上的聚合函数的支持,因此以下信息不再完全有效。但是,仍然需要注意。
所以我们需要添加另一个类来保存字符串数据
class StringClass: Object {
@objc dynamic var myString = ""
}
所以下面的类将被更新以匹配
class ParamsModel: BaseResponse {
var options = List<StringClass>()
}
然后,由于对象的深度,我们需要利用子查询来执行查询。
let predicate = NSPredicate(format: "SUBQUERY(customFields, $customField, ANY $customField.params.options.myString == 'custom').@count > 0")
let results = realm.objects(RetailerModel.self).filter(predicate)
这将返回其 CustomFieldsModel 具有 ParamsModel 选项列表属性 StringClass myString 属性等于“自定义”的所有零售商模型
推荐阅读
- powerbi - Power BI Desktop 如何使用新度量从行中减去一个值
- python - 最终成绩计划 = 不打印实际列表(显示每个人的字母成绩)
- python - 数据框到文本文件
- vba - Microsoft Access VBA - 当字段中的值不为空时锁定字段
- c - 如何使用 gtk-cairo 仅绘制屏幕上可见的内容
- fullcalendar - FullCalendar v5 根据来自服务器的动态数据动态设置 slotMaxTime 和 slotMinTime
- python - 将 Websockets 添加到部署在 Azure Web App Service 上的 Django 服务器
- javascript - AddEventListener() javascript 蛇游戏。没有输入就移动?
- laravel - 如何使用 Laravel 存储多个复选框
- laravel - Laravel 访问 WAMP 上存储文件夹中的图像