0
我有一个嵌套的查询,你可以看到下面,它花了3-4秒加载,即使我使用(或我认为我使用)解析缓存。它没有像我预期的那样工作。是否有可能在首次启动时从缓存中加载,然后从分析云中进行更新。我至少需要核心数据还是sqlite3来同步本地方面的解析?从缓存中加载UITableView数据Parse
另外,当我使用“query.cachePolicy”tableview得到重复的结果时,我该如何正确使用它。
- (void) retrieveSnapsFromParse {
NSString *currentUserName = [PFUser currentUser].username;
PFQuery *retrieveSnaps = [PFQuery queryWithClassName:@"Snap"];
[retrieveSnaps whereKey:@"from" equalTo:[PFUser currentUser].username];
PFQuery *retrieveSnaps2 = [PFQuery queryWithClassName:@"Snap"];
[retrieveSnaps2 whereKey:@"to" equalTo:[PFUser currentUser].username];
PFQuery * query = [PFQuery orQueryWithSubqueries:@[retrieveSnaps, retrieveSnaps2]];
query.cachePolicy = kPFCachePolicyCacheThenNetwork;
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
for (PFObject *object in objects) {
Snap *snap = [Snap new];
if([currentUserName isEqualToString:[object objectForKey:@"to"]]) {
snap.userName = [object objectForKey:@"from"];
snap.sentOrReceived = @"Received";
PFFile *snapImageFile = [object objectForKey:@"snappedimage"];
[snapImageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
UIImage *snapImage = [UIImage imageWithData:data];
snap.snapImage = snapImage;
}
}];
} else if([currentUserName isEqualToString:[object objectForKey:@"from"]]) {
snap.userName = [object objectForKey:@"to"];
snap.sentOrReceived = @"Sent";
}
snap.opened = [object[@"opened"]boolValue];
snap.counter = [object[@"second"]intValue];
snap.objectId = [NSString stringWithFormat:@"%@",object.objectId];
NSDate *createdAt = object.createdAt;
snap.createdDate = createdAt;
// Profile image for UICustomTableViewCell
PFQuery *userQuery = [PFUser query];
[userQuery whereKey:@"username" equalTo:snap.userName];
userQuery.cachePolicy = kPFCachePolicyCacheElseNetwork;
[userQuery getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (object) {
snap.userFirstName = [object objectForKey:@"firstname"];
PFFile *imageFile = [object objectForKey:@"profileimage"];
[imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:data];
snap.userProfileImage = image;
}
}];
[snapsTemp addObject:snap];
}
snapsTable = snapsTemp;
[self.tableView reloadData];
}];
}
}
}];
}
我下面的cellForRowAtIndexPath使用的代码;
cell.cellUserProfileImage.image = snap.userProfileImage;
而且对可变数组.m文件
@implementation SnapsVC
{
NSMutableArray *snapsTable;
}