gpt4 book ai didi

ios - 如何按列表过滤 Realm 对象

转载 作者:行者123 更新时间:2023-11-28 14:50:17 26 4
gpt4 key购买 nike

我有一个 DeviceContactModel和一个 DeviceContactPhoneModel继承自 Object ( Realm )。 DeviceContactModel有一个 List <DeviceContactPhoneModel> .我想过滤 DeviceContactModel通过 DeviceContactPhoneModel 之一属性(property)。我制作了测试代码,但它调用了应用程序崩溃。请告诉我如何实现?谢谢。

    class DeviceContactModel: Object, Mappable {

@objc dynamic var id = ""
@objc dynamic var givenName = ""
@objc dynamic var familyName = ""
@objc dynamic var updateTimestamp = 0.0

var isNew = false

let phones = List<DeviceContactPhoneModel>()

}

final class DeviceContactPhoneModel: Object, Mappable {

@objc dynamic var id = ""
@objc dynamic var contactID = ""
@objc dynamic var updateTimestamp = 0.0
@objc dynamic var countryCode: Int64 = 0
@objc dynamic var nationalNumber: Int64 = 0
@objc dynamic var fullNumber: Int64 = 0

}

测试函数

private func getDeviceContacts(_ phoneNumbers: [Int64]) -> [DeviceContactModel] {
do {
let realm = try Realm()
let deviceContacts = Array(realm.objects(DeviceContactModel.self).filter("phones.fullNumber IN %@", phoneNumbers))
return deviceContacts
} catch {
debugPrint(error.localizedDescription)
return []
}
}

崩溃日志无效谓词',原因:'包含数组属性的关键路径必须使用聚合操作

最佳答案

试试这个解决方案

如果你使用一对多关系,你使用ANY操作符

请仔细阅读这篇文章,以便您了解使用什么,因为还有另一个运算符,例如 ALL,ANY,NONE Predicate Programming Guide

 private func getDeviceContacts(_ phoneNumbers: [Int64]) -> [DeviceContactModel] {
do {
let realm = try Realm()
let deviceContacts = Array(realm.objects(DeviceContactModel.self).filter("ANY phones.fullNumber IN %@", phoneNumbers))
return deviceContacts
} catch {
debugPrint(error.localizedDescription)
return []
}
}

关于ios - 如何按列表过滤 Realm 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49925537/

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