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

私は同じ問題を理解しています。私はこれを見つけまし

答えは、既存のオブジェクトを更新するには、最初にそれを取得する必要があるということです。取得方法は、Webサイトのドキュメントに記載されています。

編集:完了!これがあなたのやり方です。最初にオブジェクトをフェッチしてから、updateメソッドを使用して必要な値を更新します。

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 に答える