访问 Parse.com 用户 table 中的自定义列返回 null

Accessing a custom column in Parse.com user table returning me null

我正在尝试检索一个名为 "address" 的新列,这是我在 android 应用程序的 Parse User 中创建的。但它 returns 我的 nullPointerException 错误和 returns 我什么都没有,尽管我在 table 中填写了地址。
link 仅展示了将自定义字段存储在用户 table 中的方法,但我需要检索存储在那里的内容。
这是我的代码:

ParseUser pUser = ParseUser.getCurrentUser();
userAddress.setText(pUser.getString("address").toString());

我也试过 get("address") 但还是 returns 我什么都没有。我在这里遗漏了什么吗?

简短回答:该用户可能只是没有设置地址。

长答案:你的代码片段会经常抛出异常,你应该预料到并处理这些异常,或者使用测试来避免抛出它们。

阅读此页:http://en.wikibooks.org/wiki/Java_Programming/Preventing_NullPointerException

键example/excerpt:

Object obj = null;
obj.toString();  // This statement will throw a NullPointerExcept

所以 pUser.getString("address") 看起来是正确的。但是对结果调用 .toString() 要求您成为 try/catching 异常。也许做

ParseUser pUser = ParseUser.getCurrentUser();
if (pUser.getString("address") != null) {
    userAddress.setText(pUser.getString("address"));
}

顺便说一句,我认为错误是 "nullPointerException" fyi! :)

您需要使用 Query 调用它,然后在 textView/editText 中显示它。请尝试以下操作:

final ParseQuery<ParseObject> address = ParseQuery.getQuery("//Class Name");
    address.getFirstInBackground(new GetCallback<ParseObject>() {

        public void done(ParseObject reqAdd, ParseException e) {

            if (address != null) {
                Log.d("quizOne", "Got it");
                //Retrieve Age
                String //CreateNewString = reqAdd.getString("//Column name");
                TextView //textView Name = (TextView) findViewById(R.id.//textView ID);
                //textViewName.setText(//StringName);
                Toast.makeText(getApplicationContext(),
                        "Successfully Recieved Address",
                        Toast.LENGTH_LONG).show();


            } else {
                Log.d("//EnterName", "//Enter Error Message");
                Toast.makeText(getApplicationContext(),
                        "Can't receive address", Toast.LENGTH_LONG)
                        .show();
            }
        }
    });

好的,我自己找到了答案。事实证明,Parse 在本地缓存 ParseUser.getCurrentUser() 对象,而我无法从服务器获取数据的原因是因为我更改了服务器上的数据并且客户端缓存未更新。 我能够通过从服务器获取 ParseUser 对象来解决这个问题:

ParseUser.getCurrentUser().fetchInBackground();

然后在从服务器检索对象后,我能够在我的客户端上获取地址字段。