3

我在名为 parse.com 的云存储站点中更新每行的值时遇到问题。我只是使用 parse.com 的新手。我已阅读有关它的文档并理解它。但我想做的与那里的例子有点不同。这是我的代码..

public void onClick(View arg0) {
    if (arg0.getId() == R.id.button1) {
        ParseQuery query = new ParseQuery("inventory");
        query.findInBackground(new FindCallback() {

              public void done(List<ParseObject> test, ParseException e) {

                  ParseObject testObject = new ParseObject("inventory");
                  if(e==null) { 
                      String str="";
                      String str2="";
                      for(int x =0;x<test.size();x++){
                          str = test.get(x).getString("name");
                          str2 = test.get(x).getString("quantity");
                          if (!str.equals(et1.getText().toString())){
                             str = "";
                          }
                          if(str.equals(et1.getText().toString()))
                          {


                                      testObject.put("quantity", et2.getText().toString());
                                      testObject.saveInBackground();

                              x = test.size();
                          }
                          else{
                              tv1.setText("error" + e.getMessage());
                          }
              }


                  }}

        });

    } }

我想更新我输入的产品名称的数量。当我的输入等于云上的名称时,它将更新引用我输入的产品名称的另一列。但是由于我的代码,它创建了一个新行,而不是更新现有行..我的代码中缺少/错误的是什么?有人可以帮帮我吗?:) 提前致谢!:)

4

1 回答 1

2

我正在解决同样的问题。我发现了这个

答案说要更新现有对象,您需要先检索它。检索方法在其网站上的文档中给出。

编辑:完成!这是您的操作方法;首先获取对象,然后通过更新方法更新您想要的值。

ParseQuery query = new ParseQuery("UserName");
            query.getInBackground("GKIp4pxBrF", new GetCallback() {
              public void done(final ParseObject object, ParseException e) {
                if (e == null) {

                    object.put("Name", username);
                    object.saveInBackground(new SaveCallback() {
                    public void done(ParseException e) {

                    object.put("Name", oldname);

                }
              });

             }

                else { 
                 e.printStackTrace();
                }

        }
});

如果您事先不知道目标代码,我建议您通过查询找到所需的行。

于 2013-03-16T20:29:20.823 回答