gpt4 book ai didi

android - Android 上的 Realm - 如何通过 id 列表(@PrimaryKey)选择多个对象?

转载 作者:IT王子 更新时间:2023-10-28 23:29:40 32 4
gpt4 key购买 nike

我正在使用 Realm 数据库构建一个 Android 应用程序。

我有一个名为 ArticleRealmObject 子类,它有一个 id 字段(它是和 int 以及@PrimaryKey)。我想将文章 ID 的 int 列表(Setint[] 或其他)传递给查询并检索只有那些文章。

在 SQL 中会是这样的:

SELECT *
FROM `table`
where ID in (5263, 5625, 5628, 5621)

我在 this StackOverflow question 中看到可以在 iOS 中执行此操作.

如何在 Android 中做到这一点?谢谢!

编辑: 只是为了告知,我也在 GitHub 存储库 here 上问过这个问题。 .

最佳答案

更新:

Realm 1.2.0 增加了 RealmQuery.in()用于与多个值进行比较。 The documentation详细说明所有可用的重载。 This one如果我们的 id 是 Integer 是我们可以使用的方法年代:

public RealmQuery<E> in(String fieldName, Integer[] values)

原答案:

如果 id 列表为空,@ChristianMelchior 的答案将返回所有文章。我希望它返回一个空的 RealmResults<Article> .这就是我最终所做的:

Set<Integer> articleIds = this.getArticleIds();
RealmQuery<Article> query = realm.where(Article.class);
if (articleIds.size() == 0) {
// We want to return an empty list if the list of ids is empty.
// Just use alwaysFalse
query = query.alwaysFalse();
} else {
int i = 0;
for (int id : articleIds) {
// The or() operator requires left hand and right hand elements.
// If articleIds had only one element then it would crash with
// "Missing right-hand side of OR"
if (i++ > 0) {
query = query.or();
}
query = query.equalTo("id", id);
}
}
return query.findAll();

关于android - Android 上的 Realm - 如何通过 id 列表(@PrimaryKey)选择多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33651585/

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