所以我对Xcode和C#来说相当新,所以这可能是一个愚蠢的问题,但是现在让我把头发撕掉3天了。
好的,所以我使用Parse来获取和保存数据,图像等。我想用PFFile图像显示UITableView。这一点我管理了。
我遇到的问题是滚动性能不好,因为我没有缓存进来的PFFile图像。我不知道如何做到这一点,我做的任何搜索都没有考虑到使用解析。
下面是我将初始数据放入数组的代码:
- (void)retrieveFromParse {
PFQuery *retrieveContent = [PFQuery queryWithClassName:@"NewsFeed"];
[retrieveContent orderByDescending:@"createdAt"];
//[retrieveContent unpinInBackground];
//retrieveContent.cachePolicy = kPFCachePolicyCacheElseNetwork;
[retrieveContent findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if(!error){
mainArray = [[NSArray alloc] initWithArray:objects];
}
[tableView reloadData];
}];
}
此代码然后获取图像:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";
TableCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.profilePicture.layer.cornerRadius = cell.profilePicture.frame.size.height /1.99;
cell.profilePicture.layer.masksToBounds = YES;
cell.profilePicture.layer.borderWidth = 0;
PFObject *imageObject = [mainArray objectAtIndex:indexPath.row];
PFFile *imageFile = [imageObject objectForKey:@"image"];
[imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if(!error){
NSLog(@"%@",data);
cell.myImage.image = [UIImage imageWithData:data];
}
}];
return cell;
}
现在,您将看到我已经注释掉了cachePolicy,因为每次使用它时,线程都会中断。
如果有人可以请改变我的代码或使用我的代码向我提供示例项目,考虑缓存数组和/或PFFile图像,这将使我免于秃顶! :)
非常感谢提前。
答案 0 :(得分:0)
您是否尝试过在viewdidload函数中检索图像而不是cellForRowAtIndexPath?
之前我遇到过同样的问题,我通过以下方式解决了近90%的问题:
在viewdidload中,我编写了2个查询:1用于检索数据,另一个用于检索图像并将它们存储在数组中。 在cellForRowAtIndexPath中,我刚刚添加了视图中的图像加载到我的单元格。这就是我所做的,但不幸的是我仍然遇到了问题。问题是不能以检索数据的相同顺序检索图像“图像不显示在正确的数据旁边:/”。 我正在尝试解决这个问题,如果我这样做,我会发布解决方案:)
希望我的解决方案能为您提供帮助。祝你好运;)