我正在使用parse作为我的iPhone应用程序的后端部分。
在Relational Data中描述的Parse中我们可以有一对多的关系。
此代码可以很好地检索数据:
PFQuery *query = [PFQuery queryWithClassName:@"Comment"];
PFObject *fetchedComment = [query getObjectWithId:@"0PprArjYi3"];
NSString *content = [fetchedComment objectForKey:@"content"];
printf("%s", [content UTF8String]);
但是当我使用Link中提供的代码时,它会返回null:
PFObject *post = [fetchedComment objectForKey:@"parent"];
[post fetchIfNeededInBackgroundWithBlock:^(PFObject *object, NSError *error) {
title = [post objectForKey:@"title"];
}];
printf("%s", [title UTF8String]); // RETURN NULL
有人能告诉我这段代码有什么问题吗? 问题可能是提取评论。
附加物
这个也有例外:
PFQuery *query = [PFQuery queryWithClassName:@"Comment"];
PFObject *fetchedComment = [query getObjectWithId:@"0PprArjYi3"];
PFObject *post = [fetchedComment objectForKey:@"parent"];
NSString *title = [post objectForKey:@"title"];
printf("%s", [title UTF8String]);
答案 0 :(得分:0)
顾名思义,方法fetchIfNeededInBackgroundWithBlock
是在后台执行的。您的代码要求获取,然后立即继续printf
。在那个时间点,尚未提取数据,因此title
可能仍为nil
。
您有两种选择 -
使用同步方法,例如[post fetch]:而不是[parent fetchInBackground ...]。
[post fetch];
title1 = [post objectForKey:@"title"];
在fetchInBackground...
方法完成后,在块内打印标题。