我在Parse.com中创建了如下所示的DataModel
Conversation
objectId startedBy
Message
objectId containedInConversation(Pointer to Conversation) content(Pointer to TextMessageContent)
TextMessageContent
objectId text
我有这样的代码
ParseQuery parseQueryMessage=new ParseQuery("Message");
parseQueryMessage.include("content")
parseQueryMessage.include("containedInConversation");
List<ParseObject> messages;
messages=parseQueryMessage.find();
ParseObject message=messages.get(0);
ParseObject textMessageContent=message.getParseObject("content");
ParseObject conversation=message.getParseObject("containedInConversation");
System.out.println(textMessageContent.getString("text")); // gives output
System.out.println(conversation.getString("startedBy")); // gives exception
第二个Println
语句我得到了异常
java.lang.IllegalStateException: ParseObject has no data for this key. Call fetchIfNeeded() to get the data.
我在这里感到困惑。
对于textMessageContent
,我没有打电话给fetchIfNeeded()
但是我得到了输出
但是对于会话对象,它不起作用。为什么???
答案 0 :(得分:1)
您需要调用fetchIfNeeded(),因为默认情况下不会提取关系中的对象。
所以你的电话应该是:
ParseObject textMessageContent=message.fetchIfNeeded()getParseObject("content");