在领域列表中过滤 swift
Filter in realm list swift
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 包含
“选项”:[“自定义”,
“塔楼”]
我想要的只是具有选项 "custom"
的所有 RetailerModel 的列表
这是一个非常具有挑战性的查询,但我想我有一个解决方案。
首先;领域列表中的原语没有得到很好的支持,而且还不可查询。有关更多信息,请参阅 and 。
编辑: 版本 10.7 添加了对 filters/queries 的支持以及基元上的聚合函数,因此以下信息不再完全有效。不过,还是要注意一下。
所以我们需要添加另一个class来保存字符串数据
class StringClass: Object {
@objc dynamic var myString = ""
}
因此以下 class 将更新以匹配
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)
这将 return 其 CustomFieldsModel 具有 ParamsModel 选项列表 属性 StringClass myString 属性 等于 'custom'
的所有零售商模型
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 包含 “选项”:[“自定义”, “塔楼”]
我想要的只是具有选项 "custom"
的所有 RetailerModel 的列表这是一个非常具有挑战性的查询,但我想我有一个解决方案。
首先;领域列表中的原语没有得到很好的支持,而且还不可查询。有关更多信息,请参阅
编辑: 版本 10.7 添加了对 filters/queries 的支持以及基元上的聚合函数,因此以下信息不再完全有效。不过,还是要注意一下。
所以我们需要添加另一个class来保存字符串数据
class StringClass: Object {
@objc dynamic var myString = ""
}
因此以下 class 将更新以匹配
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)
这将 return 其 CustomFieldsModel 具有 ParamsModel 选项列表 属性 StringClass myString 属性 等于 'custom'
的所有零售商模型