0

所以我使用 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;
}

对于queryForTableDetailsVC,它将返回传递给它的照片对象的评论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处理它会更好,以防有一些可能有用的缓存正在进行。

4

0 回答 0