我怎样才能获得android sugar中的值,我只得到对象引用

时间:2016-05-13 11:39:07

标签: android sugarorm

我第一次使用糖,似乎一切正常。我可以保存数据,似乎我在尝试查找时获取数据。我的问题是我得到的是对象,而不是我存储的价值而且我不确定为什么,因为我的行为与我在官方文档中看到的相同

这就是我要做的数据:

    Select name= Select.from(MyClass.class).where(Condition.prop("name").lt("Bob"));

    String data = name.toString();

    Log.e("aaaaa", data.toString());

这是我在日志中开始的:

com.orm.query.Select@3ce7ff7b

2 个答案:

答案 0 :(得分:0)

使用该Select语句,您将按名称查询MyClass对象,并返回Select对象。

要从中获取名称,您应该从Select中获取结果(这里我用.first()执行)并将其放入MyClass对象中。然后你可以从中得到名字。

MyClass myClass = Select.from(MyClass.class)
                      .where(Condition.prop("name").lt("Bob"))
                      .first();

String name = myClass.getName();

如果您的MyClass有方法getName()

答案 1 :(得分:0)

  

我在官方文档中看到的相同

我不相信你。

在文档here中,它显示了这段代码:

Select.from(TestRecord.class)
.where(Condition.prop("test").eq("satya"),
Condition.prop("prop").eq(2))
.list();

当您将其与代码进行比较时,您会发现您错过了对list的调用。

如果您不致电listwhere方法将返回Select个对象。这就是你得到的全部。

list将返回查询找到的所有结果。所以正确的方法是:

List<MyClass> results = 
    Select.from(MyClass.class).
    where(Condition.prop("name").
    lt("Bob")).list();

for (MyClass obj: results) {
    Log.i("aaaa", obj.toString());
    // or you can write
    // Log.i("aaaa", obj.name);
}

以上将打印所有结果。如果您只需要第一个结果,可以拨打results.get(0)