查询领域 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)
}

请在你自己的代码中安全地使用可选项,我在上面的例子中没有这样做。