簡體   English   中英

如何使用解析獲取對象和數組字段?

[英]How to fetch object and array fields with Parse?

我無法正確獲取包含'Object'類型的字段的ParseObject:在Parse DataBrowser中手動更改'Object'字段值,然后從應用程序獲取ParseObject之后,獲取的ParseObject仍為該值提供舊值“對象”字段,但為“字符串”字段提供正確的新值。

這是我使用的示例代碼:

public class MainActivity extends ActionBarActivity {

    ParseObject object;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        object = ParseObject.createWithoutData("Test", "tvgTg8jAXz");
    }


    @Override
    protected void onResume() {
        super.onResume();

        object.fetchInBackground().onSuccess(new Continuation<ParseObject, Object>() {
            @Override
            public Object then(Task<ParseObject> task) throws Exception {
                JSONObject data = task.getResult().getJSONObject("data");
                String name = task.getResult().getString("name");
                Log.d("OBJECT", data.toString());
                Log.d("OBJECT", name);
                return null;
            }
        }).continueWith(new Continuation<Object, Object>() {
            @Override
            public Object then(Task<Object> task) throws Exception {
                if (task.getError() != null) {
                    Log.e("OBJECT", task.getError().getLocalizedMessage());
                }
                return null;
            }
        });
    }
}

在我更改了DataBrowser中的“數據”和“名稱”字段之后,如果調用了“ onResume()”而沒有先前對“ onCreate()”的調用(例如,在鎖定/解鎖屏幕之后),則日志顯示舊值表示“數據”,新值表示“名稱”。

這是一個簡單的代碼示例,突出顯示我在較大項目中遇到的問題。

這是Parse Android SDK的已知問題嗎? 有解決方法嗎? 謝謝

現在,我了解到您已經打開了本地數據存儲,然后可以得到一個至少是部分答案。

打開本地數據存儲有一些副作用。 一個原因是每個對象只有一個實例存在於本地。 因此,當您第二次調用fetchInBackground時, object已經填充了數據。 當時的問題(我認為)是API不再覆蓋“復雜”類型(指針,對象,數組),這可能是因為它可能破壞數據存儲中的內部關系。 由於數據存儲將遞歸保存對象(和指針),因此突然交換指針可能會使對象“掛起”。 (再次,僅是猜測)。

現在,我必須承認,它仍然使我對您的代碼有些困惑,因為但是似乎您在任何時候都沒有將對象寫入數據存儲中。

應該起作用的是在“刷新”之前取消固定對象:

object.unpinInBackground.onSuccess(new Continuation<>{
    ...
    // when done call fetch
});

根據Parse的說法,這是一個已知問題,它們暫時無法解決: https : //developers.facebook.com/bugs/1624269784474093/

我們必須使用以下方法從ParseObject檢索JSON對象/數組字段:

  • 使用getMap()而不是getJSONObject()
  • getList()而不是getJSONArray()

這些方法將分別返回Map和List對象。 我發現在我的項目中管理Map和List而不是JSONObjet和JSONArray不是問題,甚至更清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM