所以我使用 Parse.com 和他们的 AnyPic 应用程序作为起点。这是一个 Instagram 克隆。但是,与 Instagram 不同的是,图片的评论不包含在主页上。您必须点击图片,它会显示带有评论的 DetailsVC。这是我试图改变的第一件事。
我是 Parse 的新手(以及一般的后端),并且在尝试修改查询以返回评论时遇到了麻烦。如果您使用过 AnyPic,您就会知道评论不会保存在Photo
类中,而是保存在单独的Activity
类中:
Activity.type
将等于comment
并且Activity.content
将是评论文本。
因此,AnyPic 子类 Parse 中的 VCPFQueryTableViewController
覆盖了queryForTable
获取数据的方法。这是queryForTable
他们的 AccountVC,它只返回照片:
- (PFQuery *)queryForTable {
if (!self.user) {
PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];
[query setLimit:0];
return query;
}
PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];
query.cachePolicy = kPFCachePolicyNetworkOnly;
if (self.objects.count == 0) {
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
}
[query whereKey:kPAPPhotoUserKey equalTo:self.user];
[query orderByDescending:@"createdAt"];
[query includeKey:kPAPPhotoUserKey];
return query;
}
对于queryForTable
DetailsVC,它将返回传递给它的照片对象的评论self.photo
:
- (PFQuery *)queryForTable {
PFQuery *query = [PFQuery queryWithClassName:self.parseClassName];
[query whereKey:kPAPActivityPhotoKey equalTo:self.photo];
[query includeKey:kPAPActivityFromUserKey];
[query whereKey:kPAPActivityTypeKey equalTo:kPAPActivityTypeComment];
[query orderByAscending:@"createdAt"];
[query setCachePolicy:kPFCachePolicyNetworkOnly];
// If no objects are loaded in memory, we look to the cache first to fill the table
// and then subsequently do a query against the network.
//
// If there is no network connection, we will hit the cache first.
if (self.objects.count == 0 || ![[UIApplication sharedApplication].delegate performSelector:@selector(isParseReachable)]) {
[query setCachePolicy:kPFCachePolicyCacheThenNetwork];
}
return query;
}
我只是想不通如何将两个查询合并为一个并让它返回带有注释值的照片对象。
我曾想过在tableView:numberOfRowsInSection:
一次queryForTable
返回一组照片时对评论运行单独的查询,但我认为让 ParsequeryForTable
处理它会更好,以防有一些可能有用的缓存正在进行。