Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当我可以得到其他字段的值时,为什么关系查询中的objectId总是返回null?_Android_Parse Platform - Fatal编程技术网

Android 当我可以得到其他字段的值时,为什么关系查询中的objectId总是返回null?

Android 当我可以得到其他字段的值时,为什么关系查询中的objectId总是返回null?,android,parse-platform,Android,Parse Platform,我试图从查询中获取指针的objectId。从指针获取objectId是可行的,但从自定义指针获取objectId是不可行的,尽管我可以毫无问题地访问指针中的其他字段 下面我将对我尝试过的不同方法进行评论,以及哪些方法有效,哪些方法无效。你知道会出什么问题吗 ParseQuery<ParseObject> testQuery = ParseQuery.getQuery("Sell"); testQuery.whereEqualTo("user", ParseUser.getCurren

我试图从查询中获取指针的objectId。从指针获取objectId是可行的,但从自定义指针获取objectId是不可行的,尽管我可以毫无问题地访问指针中的其他字段

下面我将对我尝试过的不同方法进行评论,以及哪些方法有效,哪些方法无效。你知道会出什么问题吗

ParseQuery<ParseObject> testQuery = ParseQuery.getQuery("Sell");
testQuery.whereEqualTo("user", ParseUser.getCurrentUser()); // A Pointer<_User> field.
testQuery.include("user");
testQuery.include("book");                                  // A Pointer<Book> field.
testQuery.findInBackground(new FindCallback<ParseObject>() {
    @Override
    public void done(List<ParseObject> bookListResults, ParseException e) {
        if (e == null) {
            for (ParseObject object : bookListResults) {
                log("objectId: " + object.getObjectId()); // Works

                log("userObjectId: "  + object.getParseObject("user").getObjectId()); // Works

                log("bookObjectId: "  + object.getParseObject("book").getObjectId()); // null


                ParseObject bookObject = object.getParseObject("book");
                log("bookObjectId: "  + bookObject.getObjectId());         // null
                log("bookObjectId2: " + bookObject.getString("objectId")); // null
                log("bookIsbn13: "    + bookObject.getString("isbn13"));   // Works
                log("bookIsbn10: "    + bookObject.getString("isbn10"));   // Works
                log("bookGoogleId: "  + bookObject.getString("googleId")); // Works
            }
        } else {
            CustomToast.showToast(getActivity(), e.getMessage());
        }
    }
});
parsequerytestquery=ParseQuery.getQuery(“Sell”);
testQuery.whereEqualTo(“user”,ParseUser.getCurrentUser());//指针字段。
testQuery.include(“用户”);
testQuery.include(“book”);//指针字段。
findInBackground(新的FindCallback(){
@凌驾
public void done(列出bookListResults,parsee异常){
如果(e==null){
for(ParseObject对象:bookListResults){
log(“objectId:+object.getObjectId());//有效
log(“userObjectId:+object.getParseObject(“user”).getObjectId());//有效
log(“bookObjectId:+object.getParseObject(“book”).getObjectId());//null
ParseObject bookObject=object.getParseObject(“book”);
日志(“bookObjectId:+bookObject.getObjectId());//null
log(“bookobjectd2:”+bookObject.getString(“objectId”);//null
log(“bookIsbn13:+bookObject.getString(“isbn13”);//有效
log(“bookIsbn10:+bookObject.getString(“isbn10”);//有效
log(“bookGoogleId:+bookObject.getString(“googleId”);//有效
}
}否则{
CustomToast.showToast(getActivity(),e.getMessage());
}
}
});
ps-objectId字段在分析数据浏览器中填写

ps-我正在为Android使用Parse-1.4.3

更新: -在上面的代码中,
Book
是扩展ParseObject的完整子类,使用
ParseObject.registerSubclass(Book.class)
@ParseClassName(“Book”)

当我删除registerSubclass()和注释时,objectId就工作了!这是一个可重复的错误


我还没有找到这背后的原因。任何进一步的洞察都会很有帮助。

只有在您第一次创建OID时才有对OID的引用,并且返回的json具有该值

myObj.getObjectId()将返回null

请参阅“哪里有解决方法”中的同一主题的讨论

AFAIK android SDK没有解决方法

但是对于android,您可以使用android的RESTAPI来获取OID

OID的Rest示例(请参见代码底部的“objectId”):


谢谢,但我相信objectId应该随着每个查询返回,就像我最初问题中3个ParseObject中的2个一样。我已经用更多的信息更新了这篇文章,以帮助使用Android SDK通过ParseQuery正确获取objectId。也许你的问题是异步滞后,正如本文中提到的。
GET -H "X-Parse-Application-Id: ovv"  -H "X-Parse-REST-API-Key: eoj"  -H "X-Parse-Session-Token: 9ds" -G --data-urlencode 'limit=2'  https://api.parse.com/1/classes/MyCls

{
"results":[
{
"createdBy":{
"__type":"Pointer",
"className":"_User",
"objectId":"I2bhDkeA5L"
},
"media1":{},
"media2":{},
"media3":{},
"msg":"hi how are you ",
"createdAt":"2014-03-07T05:32:48.906Z",
"updatedAt":"2014-03-09T00:31:01.498Z",
"objectId":"XPdLazBUzV",   ********
"ACL":{}
},