问题标签 [realm-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
275 浏览

android - 使用字符串查询过滤 RealmResults 并获得 RecyclerView 粒度动画

我想根据列表过滤RealmRecyclerViewAdapter并获得精细的动画(notifyItemRange*())。

我的过滤逻辑:

问题在于,在适配器内部,changeSet 状态始终为 INITIAL,我假设是因为每次更改查询时我都会创建一个新的 RealmResults 对象。

我在任何地方都找不到解决方案。我不可能是第一个拥有这样一个简单用例的人……对吧?!(我要疯了)

想法?

0 投票
0 回答
56 浏览

android - 如何获取删除或插入通知领域内部列表?

我有票类和消息类,如下所示。我想为特殊票证 ID 中的内部消息列表设置更改侦听器,而不是整个表消息。我阅读了有关结果和对象 changeListener 和 Notifications 的信息,但找不到任何解决方案;

我怎样才能做到这一点 ?

0 投票
2 回答
171 浏览

realm - 无法删除领域用户

我通过 SyncCredentials 登录 Realm 允许创建用户,如下代码:

在我想使用以下代码在 Realm 上删除此用户之后:

此代码运行成功,但我在 Realm Studio 上进行了检查,该用户仍然存在。请帮我解决这个问题,非常感谢。

0 投票
2 回答
37 浏览

realm - 带连词的领域链接查询

与Realm几乎相同的问题,复杂的链接查询,但有一个重要的变体:

在官方文档中,https://realm.io/docs/java/latest/#link-queries - 有一个示例如何选择“棕色”狗的主人和“蓬松”狗的主人。不像之前的问题中写的那样,“Brown Fluffy”狗,因为代码示例没有实现连词。

所以我的问题是:如何只获得拥有“棕色”和“蓬松”狗的人(同一只狗的两种条件)?给定示例的数据,这只是 U2。文档中的第二个代码示例添加了第三个过滤器“黄色”,所以答案似乎是正确的,但在同一条狗的字段上仍然没有连词。以下是我在文档中的尝试:

我需要检查数组中子元素的条件结合。我需要将其实现为查询,以填充适配器。Realm可以吗?

我梦想着一种新的条件分组,允许在 List 字段的项目上指定几个条件,如下所示:

0 投票
1 回答
287 浏览

android - 我是否需要迁移才能将类型 Int 更改为 Long?

我的 RealmObject 类中有一个生日字段,它是Int?. 我需要将此字段的类型更改为Long?. 我不知道我是否需要迁移。

来自领域文档:

整数类型 byte、short、int 和 long 在 Realm 中都映射为 long。

我试图在模拟器上安装一个没有 deleteRealmIfMigrationNeeded(意味着 Realm 将在需要时尝试进行迁移)的应用程序版本,然后将字段从 更改Int?Long?. 没有崩溃或异常。此外,当我从模拟器中拉出我的领域文件时,字段的类型保持不变,仍然是Int?.

我所期待的是,在这种情况下我不需要迁移。但我不想在没有得到真正答案的情况下推送更新。

0 投票
0 回答
56 浏览

android - 从 Source 构建领域并在 Android 项目中使用 AAR

我已经从源代码构建了 Realm-Java,并根据Offlicial-doc生成了以下文件

  • Realm Gradle 插件的 jar 文件
  • Realm 库的 aar 文件
  • 用于注释的 jar 文件
  • 注释处理器的 jar 文件

现在我使用 aar 作为我的应用程序的模块依赖项,一切都很好,但 Realm 库依赖于许多其他库,例如“Relinker”,这没有解决,我的应用程序在 Realm.init 上崩溃。

请帮助我,在我的 Android 项目中使用构建的领域 AAR 和 JAR 文件是否有任何工作方式,而不使用 maven 和 jcenter 依赖项。

PS:根据我公司对任何 3rd 方库的政策,从源代码构建是强制性的。

0 投票
1 回答
253 浏览

java - 如何避免 Realm.io “尝试在空对象引用上调用虚拟方法 'boolean io.realm.ProxyState.isUnderConstruction()'”错误

更新:

此时我无法创建任何新的基于 Realm 的对象。无论我是否清理、重建等,每一个都失败并出现相同的错误。为了测试这一点,我创建了一个新类“Sample”:

在我的 MainActivity.java 中,我尝试创建一个新实例:

此方法使用与此项目中可以addSample()工作的两个类类似的方法:

我现在完全被这个项目困住了。

更新:

我在我的应用程序中完全注释了对“联系人”对象的所有引用,然后从我的项目中删除了 Contact.java。我做了一个完整的重建,然后运行它,一切正常。

然后我创建了一个新类 Contact.java 并输入了与以前相同的字段等,并在我的项目的其余部分中取消了对它的引用。我进行了重建并运行 - 并得到了同样的错误。

然后我将 Contact 类的名称重构为ContactSharingInfo,认为某处可能存在类名冲突。重建并再次运行 - 同样的错误,这次引用了新的类名。

原帖:

我正在使用 gradle 插件和注释处理器 5.9.1。我创建了一个新类(“Contact.java”),最初工作正常。然后我调整了类(删除了几个字段,添加了一个新字段),我开始收到这个错误。我已经在三星 S7 Edge (API 26) 以及几个模拟器上对此进行了测试。同样的问题。

我已经完成了各种清理、重建、无效缓存和重新启动等操作。没有帮助。我查看了错误#3819#4579,但其中没有任何帮助。我已禁用即时运行。没有帮助。

堆栈跟踪是:

导致此问题的代码(我集中 Realm 访问的 MediaDataMgr 类中的 addContact() )是:

堆栈跟踪中引用的 Contact 类是:

在调试到 com_reddragon_intouch_model_ContactRealmProxy.java 类时,发现异常是因为public String realmSet$id()调用方法时变量 'proxyState' 为空:

这让我相信 proxyState 的初始化realm$injectObjectContext()没有被调用。

这种创建新对象的相同方法在同一个项目中与其他两个类一起工作得很好,我验证了realm$injectObjectContext() IS在那里被调用。这是我的 Media.java 类(有效)的相同类型构造中的堆栈跟踪:

因此,如何为 Contact 类生成代码的方式必须与其他有效的代码不同 - 并且“某事”使 Realm 不调用该方法感到困惑。

该怎么办?

0 投票
1 回答
101 浏览

kotlin - 领域:如何通过 DynamicRealm 判断一个字段是否可以为空?

是否DynamicRealm提供了一种方法来确定一个字段在 kotlinRealmModel子类上是否可以为空?

例如,给定以下领域模型:

如果我获取每种类型的动态领域对象表示并尝试通过 确定参数“i”的字段类型dynamicRealmObj.getFieldType("i"),它们都返回“INTEGER”。

有没有办法可以确定动态领域对象上字段的可空性?我是否必须使用反射来尝试确定底层 Java 字段的注释内容?

0 投票
3 回答
986 浏览

android - 如何在迁移期间删除未被任何其他对象引用的 Realm 对象?

我有两个模型 -

我一直在使用insertOrUpdate()更新 Route 类,假设当我调用它时,directionList 中的现有方向对象被删除并替换为我提供的新列表。然而,我最近发现这并没有发生。当我调用时,甚至不支持级联删除route.deleteFromRealm()。所以现在我在 Direction 表中有数百个对象,没有对象引用它们。

如何从 Direction 类中删除所有在 Realm 迁移中没有引用它们的 Route 对象的对象?

0 投票
1 回答
89 浏览

realm - 同一个 ArrayObject 上的领域 java 嵌套查询

当前代码:

它返回类似于ANY记录的结果。

我想检查嵌套查询,仅在满足两个条件时才返回记录。同样在嵌套查询中,记录电子邮件必须是a@a.com并且type=0

我尝试了以下方法,但结果相同。

我有两条记录

下面的屏幕截图显示了 2 个子项,

  1. 电子邮件= a@a.com & 类型 = 1
  2. 电子邮件= x@x.com &类型 = 0

在非此即彼的方法中检查两个值的领域。

也试过:

更新