【问题标题】:Realm: Get name field from result领域:从结果中获取名称字段
【发布时间】:2018-02-06 23:42:47
【问题描述】:

我正在尝试从结果中获取 name 属性。到处看了看,也想不通。当我 log.d 时,我得到了这个:

[Person{id=0, name='Jonathon', age=21}]

如何仅访问名称而不访问完整结果?

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Realm realm = Realm.getDefaultInstance();

    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            Person person = realm.createObject(Person.class);
            person.setName("Jonathon");
            person.setAge(21);
        }
    });

    RealmQuery<Person> query = realm.where(Person.class).equalTo("name", "Jonathon");
    RealmResults<Person> result = query.findAll();

    Log.d("Result", result.toString());
}

【问题讨论】:

    标签: android database realm


    【解决方案1】:
    RealmQuery<Person> query = realm.where(Person.class).equalTo("name", "Jonathon");
    RealmResults<Person> result = query.findAll();
    
    Person person = result.get(0);
    Log.d("Result", person.getName());
    

    【讨论】:

    • 如果没有记录会导致崩溃。
    • 好吧,考虑到上面有一个 executeTransaction 声明,我假设你知道你在寻找什么
    • 我的朋友,你是对的!但是,如果他将名称从“Jonathon”更改为 RealmQuery 中的其他名称怎么办?我的意思是避免运行时崩溃。
    • 那么他应该清楚自己在做什么。如果他在开发过程中崩溃,至少他会从中吸取教训:p
    • 您好! .get(0) 有什么作用?
    【解决方案2】:

    您的查询似乎运行良好。

    List<Person> result = realm.where(HomeJob.class).equalTo("name", "Jonathon").findAll();
        // you can use `RealmResults` as per your requirement
    
    
    for (Person p :
                result) {
            Log.d("Result", "person name: "+p.getName());
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      相关资源
      最近更新 更多