ios - 解析 PFQueryTableViewController numberOfRowsInSection 错误

ios - Parse PFQueryTableViewController numberOfRowsInSection Error

我有一个 PFQueryTableViewController。

这类似于 Instagram 显示其提要的方式。

这是我的故事板的图片:

我使用以下代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return self.objects.count;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 4;
}

所以对于每个对象,都有一个部分。在每个部分中,它们都是四个单元格。这样我就可以轻松地动态调整某些单元格的大小。 (例如,包含对象文本的单元格可以根据文本量动态调整大小)。

问题是如果我从解析中检索到的对象少于四个,此代码会导致崩溃:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return 4;
    }

我添加了一个异常断点,它显示此方法是导致错误的原因:

- (PFObject *)objectAtIndexPath:(NSIndexPath *)indexPath {
    return self.objects[indexPath.row];
}

它突出显示了这一行,专门用于导致错误:

return self.objects[indexPath.row];

所以出于某种原因,如果这个方法returns少于四个对象,例如:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
    }

然后我收到上述错误。这是我的控制台的图像:

我的假设是此方法返回的任何内容:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

作为调用此方法的索引:

[self.objects objectAtIndex:methodReturnValue];

这就是为什么如果对象少于 4 个并且 numberOfRowsInSection 每个部分要求 4 个单元格并且还调用上述方法,那么很明显它会通过错误,因为它在 indexPath 处要求对象4 当只有 1 个对象时。

我不知道这是不是实际错误,但这是我得到的最接近的错误。

这是我用于某些代码的资源,因为我在 PFQueryTableViewController 中使用了部分:Parse Sections Post(即使我最终只是访问了 [self.objects objectAtIndex:indexPath.section];

如有任何帮助,我们将不胜感激!

您的分析完全正确!

However, PFQueryTableViewController already implements numberOfRowsInSection, so there is no need for you to implement it too.

您只需要实现 queryForTable,超类会处理其余部分。