我需要使用 id 列表查询 Realm 对象,id 是对象的主键。我已经尝试过以下方法:
// Query a list of Dogs by their _ids
let doggoIds = ["1", "2", "3", "1", "2"]
realm.objects(Dog.self).filter("_id IN %@", doggoIds)
// Result: [Dog1, Dog2, Dog3]
Run Code Online (Sandbox Code Playgroud)
id 列表包含重复项,但正如您所看到的,结果是唯一的 Dog 对象的列表。
我想知道是否有人可以想出一种不同的方式来编写这个查询,以便我们Results<Dog>从包含重复项的 id 列表中获得一个很好的集合。谢谢!
领域结果包含唯一的对象,因此最简单的解决方案是查询每只狗并将结果添加到数组中。CompactMap 做得很好,因为它过滤掉了 nil。
let listOfDogsToFind = ["Fido", "Dino", "Sport", "Fido", "Cupid"]
let dogArray = listOfDogsToFind.compactMap { dogName -> DogClass? in
if let result = realm.objects(DogClass.self).filter("dog_name == %@", dogName).first {
return result
}
return nil
}
for dog in dogArray {
print("dog name: \(dog.dog_name)")
}
Run Code Online (Sandbox Code Playgroud)
假设丘比特不存在,这是输出
dog name: Fido
dog name: Dino
dog name: Sport
dog name: Fido
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3075 次 |
| 最近记录: |