ParseObject的fetchIfNeeded()

时间:2013-12-30 04:34:37

标签: android parse-platform

我在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()但是我得到了输出 但是对于会话对象,它不起作用。为什么???

1 个答案:

答案 0 :(得分:1)

您需要调用fetchIfNeeded(),因为默认情况下不会提取关系中的对象。

所以你的电话应该是:

ParseObject textMessageContent=message.fetchIfNeeded()getParseObject("content");