查询领域 swift 中嵌入的对象列表
Query embedded list of objects in realm swift
如何有条件地查询领域中嵌入的对象列表。
根据文档,仅查询嵌入式对象看起来很简单,但是嵌入式对象列表部分让我很困扰。
我们还可以使用 map 和 filter 之类的转换吗?
例如,如果我想为企业“xyz”获取城市为“abc”的所有地址
使用以下型号
class Address: EmbeddedObject {
@Persisted var street: String?
@Persisted var city: String?
@Persisted var country: String?
@Persisted var postalCode: String?
}
class Business: Object {
@Persisted var name = ""
@Persisted var addresses: List<Address> // Embed an array of objects
convenience init(name: String, addresses: [Address]) {
self.init()
self.name = name
self.addresses.append(objectsIn: addresses)
}
}
您可以在 Realm 中使用任何高阶函数(map、reduce 等)
然而
这样做是在否定 Realm 对象的 lazy-loading 性质,例如不是延迟加载,而是将所有对象都加载到内存中,这可能会使设备不堪重负。
回答您的问题;有几种方法可以查询业务 xyz 并从地址中获取城市 abc;这是一个选项
let xyzBusiness = realm.objects(Business.self).where { [=10=].name == "xyz" }.first!
let addressResults = xyzBusiness.addresses.where { [=10=].city == "abc" }
for addr in addressResults {
print(addr)
}
请在你自己的代码中安全地使用可选项,我在上面的例子中没有这样做。
如何有条件地查询领域中嵌入的对象列表。 根据文档,仅查询嵌入式对象看起来很简单,但是嵌入式对象列表部分让我很困扰。 我们还可以使用 map 和 filter 之类的转换吗?
例如,如果我想为企业“xyz”获取城市为“abc”的所有地址 使用以下型号
class Address: EmbeddedObject {
@Persisted var street: String?
@Persisted var city: String?
@Persisted var country: String?
@Persisted var postalCode: String?
}
class Business: Object {
@Persisted var name = ""
@Persisted var addresses: List<Address> // Embed an array of objects
convenience init(name: String, addresses: [Address]) {
self.init()
self.name = name
self.addresses.append(objectsIn: addresses)
}
}
您可以在 Realm 中使用任何高阶函数(map、reduce 等)
然而
这样做是在否定 Realm 对象的 lazy-loading 性质,例如不是延迟加载,而是将所有对象都加载到内存中,这可能会使设备不堪重负。
回答您的问题;有几种方法可以查询业务 xyz 并从地址中获取城市 abc;这是一个选项
let xyzBusiness = realm.objects(Business.self).where { [=10=].name == "xyz" }.first!
let addressResults = xyzBusiness.addresses.where { [=10=].city == "abc" }
for addr in addressResults {
print(addr)
}
请在你自己的代码中安全地使用可选项,我在上面的例子中没有这样做。