使用Realm.io存储清单的最佳方法是什么?

时间:2017-03-13 21:14:50

标签: android realm

我使用Android Studio开发了一个应用程序,该应用程序具有一个字段,用户可以在该字段中标记他们将使用某种药物的一周中的哪一天。

我曾想过使用布尔数组以类似于

的格式存储该信息
  {false,true,true,false,true,true,false}

不幸的是,我发现Realm不支持数组,另外我尝试使用RealmList,但它也没有用。有没有人知道在数据库中存储此信息的好方法,而不是在类中创建七个布尔值?

3 个答案:

答案 0 :(得分:0)

Realm是一个面向对象的数据库,这意味着它自己存储对象。因此,接近它的最佳方法是创建一个扩展RealmObject的类,其中包含七个布尔属性(每周的每一天),也许是一年中的周数或星期一的初始日期,直到你。

然后,您可以通过创建托管Realm实例直接保存该对象,并根据文档存储它。您可以检查如何将realm实例存储到数据库here

答案 1 :(得分:0)

如果您不需要执行像星期三必须采取的药物那样的问题,那么您可以将其存储为字符串字段

[true, false, false, true, true, true, false]

使用JSON解析器(here)将其作为List<Boolean>获取。

如果您执行需要进行该查询,那么您应该只创建7个布尔字段。

答案 2 :(得分:0)

我要去存储一个@PrimaryKey与星期几有关的对象(值0到6表示星期一到星期日)和你的布尔字段:

class Day extends RealmObject {
    @PrimaryKey
    int dayOfWeek; // could be String as well
    boolean takeMedication;
}

然后,您可以使用dayOfWeek查询所有对象并按findAllSorted()排序:

realm.where(Day.class).findAllSorted("dayOfWeek");

或仅查询某一天:

realm.where(Day.class).equalTo("dayOfWeek", 0).findFirst();

优点:

  • @PrimaryKey注释将确保您在一个Day值的领域中只有一个dayOfWeek实例
  • 查询有意义
  • 无需从表示数组或类似内容的字符串中进行任何其他序列化/反序列化
  • 可轻松扩展以存储更多星期特定数据 - 只需向Day课程添加更多字段。

您还可以使用initial data确保您通过首次启动应用程序将数据库中的所有7天存储在数据库中。