我需要在应用程序中同步数据。我向服务器发出请求,绑定并使用copyToRealmOrUpdate(Iterable<E> objects)
将此数据添加或更新到数据库。
但我的文件可能无效,我需要删除在请求时返回的数据中没有的所有内容。我不想截断或执行手动删除来执行此操作,因为性能很重要。
@beeender
您如何使用表格的PRIMARY_KEY删除我不想要的数据(或者我不需要)?
看起来像:
1º:如果填充了数据库,请获取所有主键并将其添加到HashMap
(或任何执行相同操作的任何内容)。
2º:如果已更新或添加,则更新数据或添加,删除HashMap
项目(使用主键)。
3º:删除领域中HashMap
的所有项目。
答案 0 :(得分:2)
在这种情况下,也许In memory Realm
对你来说是个不错的选择。您可以找到相关文档here。
使用内存中的Realm:
----------------------------------- 删除正常案例数据的更新 -----------------------------------------
要删除,您可以使用一些选项
realm.allObjects(MyModel.class).clear();
Realm.deleteRealm(realmConfig);
如果您真的关心性能,可以考虑在一个Realm中分离这些数据,并使用选项2或3将其删除。有关通过RealmConfiguration
使用不同的Realm,请参阅文档here。
----------------------------------- 按日期字段删除的更新 ------------------------------------------------- -----
对于您的用户案例,这将是一个不错的选择:
在模型中添加Date
字段,并添加注释@Index
以便更快地查询。
更新/添加行并将修改日期设置为当前时间。
删除当前日期之前modifiedDate
所在的对象。realm.where(MyModel.class).lessThan("modifiedDate", currentDate).findAll().clear()
注意:&#34;日期被截断,精度为一秒。为了保持32位和64位设备之间的兼容性,不能在1900-12-13之前和2038-01-19之后存储日期。&#34; 请参阅current limitations。如果您可以在很短的时间内修改表格,而且准确度不合适,请考虑使用int
字段。您可以按RealmResult.max()