Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Realm.io存储清单的最佳方式是什么?_Android_Realm - Fatal编程技术网

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

Android 使用Realm.io存储清单的最佳方式是什么?,android,realm,Android,Realm,我正在使用Android Studio开发一个应用程序,该应用程序有一个字段,用户在该字段中标记一周中哪几天他们将使用某种药物 我曾想过使用一个布尔数组以类似的格式存储这些信息 {false,true,true,false,true,true,false} 不幸的是,我刚刚发现Realm不支持数组,另外我尝试使用RealmList,但也不起作用。除了在类中创建七个布尔值之外,还有谁知道在数据库中存储这些信息的好方法吗?领域是一个面向对象的数据库,这意味着它存储对象本身。因此,最好的方法是创

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

我曾想过使用一个布尔数组以类似的格式存储这些信息

  {false,true,true,false,true,true,false}

不幸的是,我刚刚发现Realm不支持数组,另外我尝试使用RealmList,但也不起作用。除了在类中创建七个布尔值之外,还有谁知道在数据库中存储这些信息的好方法吗?

领域是一个面向对象的数据库,这意味着它存储对象本身。因此,最好的方法是创建一个类,该类扩展了
RealmObject
,包含七个布尔属性(一周中的每一天)以及一年中的周数或周一的初始日期,具体取决于您


然后,您可以通过创建托管领域实例直接保存该对象,并根据文档进行存储。您可以检查如何将领域实例存储到数据库中。领域是一个面向对象的数据库,这意味着它存储对象本身。因此,最好的方法是创建一个类,该类扩展了
RealmObject
,包含七个布尔属性(一周中的每一天)以及一年中的周数或周一的初始日期,具体取决于您


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

如果不需要执行诸如“星期三必须服用的药物”之类的查询,则可以将其存储为字符串字段

[true, false, false, true, true, true, false]
并使用JSON解析器将它们作为
List
获取,如



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

如果您不需要执行诸如“必须在周三服用的药物”之类的查询,那么您可以将其存储为字符串字段

[true, false, false, true, true, true, false]
并使用JSON解析器将它们作为
List
获取,如



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

我会选择存储一个对象,其中一个
@PrimaryKey
与一周中的某一天(值0-6表示周一-周日)和您的布尔字段相关:

class Day extends RealmObject {
    @PrimaryKey
    int dayOfWeek; // could be String as well
    boolean takeMedication;
}
然后,您可以使用
findAllSorted()
查询所有对象并按
dayOfWeek
排序:

或者只是查询某一天:

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

  • @PrimaryKey
    注释将确保一个
    dayOfWeek
    值的域中正好有一个
    Day
    实例
  • 查询是有意义的
  • 无需对表示数组或类似内容的字符串执行任何额外的序列化/反序列化
  • 可轻松扩展以存储更多特定于一周中某一天的数据-只需向
    day
    类添加更多字段即可

您还可以使用以确保在第一次应用程序启动时将一周中的所有7天都存储在数据库中。

我会选择存储一个对象,其中包含一个与一周中的某一天相关的
@PrimaryKey
(值0-6表示周一-周日)和布尔字段:

class Day extends RealmObject {
    @PrimaryKey
    int dayOfWeek; // could be String as well
    boolean takeMedication;
}
然后,您可以使用
findAllSorted()
查询所有对象并按
dayOfWeek
排序:

或者只是查询某一天:

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

  • @PrimaryKey
    注释将确保一个
    dayOfWeek
    值的域中正好有一个
    Day
    实例
  • 查询是有意义的
  • 无需对表示数组或类似内容的字符串执行任何额外的序列化/反序列化
  • 可轻松扩展以存储更多特定于一周中某一天的数据-只需向
    day
    类添加更多字段即可

您还可以使用以确保在第一次应用程序启动时将一周中的所有7天都存储在DB中。

RealmList有什么问题?它不支持布尔等基本类型。为什么不将其存储为
{false,true,true,false,true,false}
?或者更准确地说,
[false,true,true,false,true,true,false]
List List=gson.fromJson(realmObject.getDays(),new TypeToken(){})?但是如果您需要每天查询,最好使用7个布尔值。
RealmList
有什么问题吗?它不支持布尔值之类的基本类型。为什么不将其存储为
{false,true,true,false,true,false}
?或者更准确地说,
[false,true,true,false,true,true,false]
List List=gson.fromJson(realmObject.getDays(),new TypeToken(){})?但是如果你需要每天查询,你最好用7个布尔值。我可以把它包含在另一个RealMube类中吗?是的,这是绝对可能的,当然,你必须考虑主键约束是否适合你的数据模型,既然有一个域对象作为另一个域,意味着单向链接,我可以把它包含在另一个RealMube类中吗?是的,这是绝对可能的,当然,你必须考虑主键约束是否适合你的数据模型,因为将一个领域对象作为另一个领域的字段意味着单向链接,所以我将来可能需要对它执行查询。我想我还是会试着去做布尔解吧。将来我可能需要对它执行查询。我想我还是会尝试做布尔解吧。