gpt4 book ai didi

android - copyToRealm 或更新和删除

转载 作者:行者123 更新时间:2023-11-29 00:08:15 24 4
gpt4 key购买 nike

我需要在我的应用程序中同步数据。我向服务器发出请求,绑定(bind)并使用 copyToRealmOrUpdate(Iterable<E> objects)将此数据添加或更新到数据库。

但是我的文件可能会失效,我需要一些东西来删除请求返回的数据中没有的所有内容。我不想通过截断或手动删除来执行此操作,因为性能很重要。

想法 1

@beeender

你觉得用表的PRIMARY_KEY来删除我不想要(或者我不需要)的数据怎么样?

看起来像:

  • 1º:如果数据库已填充,获取所有主键并将其添加到 HashMap 中(或任何具有相同功能的东西)。

  • 2º:更新数据或添加、删除HashMap的项目(使用主键)是否已更新或添加。

  • 3º:删除 HashMap 的所有项目在 Realm 上。

最佳答案

在这种情况下,In memory Realm 可能是您的不错选择。您可以找到相关文件here .

通过使用内存中的 Realm:

  • 当您启动一个新的应用程序进程时,数据库将为空
  • 关闭 Realm 的所有实例后,数据也将被清除。

---------------------------------- 正常情况下删除数据的更新 ------------------------------------------

对于删除,您可以使用一些选项

  1. 删除特定型号的所有数据,请参阅 doc
    realm.allObjects(MyModel.class).clear();
  2. 通过 (Realm API)[ https://realm.io/docs/java/latest/api/io/realm/Realm.html#deleteRealm(io.realm.RealmConfiguration)] 从给定的 Realm 中删除全部数据(首先关闭所有实例!):
    Realm.deleteRealm(realmConfig);
  3. 或者通过普通的 java API 删除 Realm 文件。

如果你真的很关心性能,你可以考虑将这些数据分离在一个 Realm 中,然后使用选项 2 或 3 来删除它们。见文件 here通过 RealmConfiguration 使用不同的 Realm。

-------------------------------- 按日期字段删除更新 ---------------------------------------------- -----

对于您的用户案例,这将是一个不错的选择:

  1. 为您的模型添加一个Date 字段,并添加注解@Index 以加快查询速度。

  2. 更新/添加行并将修改日期设置为当前时间。

  3. 删除其modifiedDate在当前日期之前的对象。realm.where(MyModel.class).lessThan("modifiedDate", currentDate).findAll()。清除()

注意:“日期以一秒的精度被截断。为了保持 32 位和 64 位设备之间的兼容性,不可能存储 1900-12-13 之前和 2038- 之后的日期01-19。” 参见 current limitations .如果您可以在很短的时间内修改表格,而准确性不适合,请考虑改用 int 字段。您可以通过 RealmResult.max() 获取列的最大值

关于android - copyToRealm 或更新和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32211488/

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