几天来,我一直试图通过研究和翻阅文档来解决这个问题,但我无法理解它/我不明白。
以下是我想要达到的目标:

我有一个名为"ProfilePhotos“的自定义类和一个标准的用户类。当我在一个名为"profilePicture“的列中将图像转储到主用户类时,我有一些代码是”工作的“。我需要从ProfilePhotos类中的‘ProfilePhotos’获取图像。
我可以知道如何将图像创建到一个类(ProfilePhotos)中,但无法知道如何在从图像所属的用户收集数据时调用它们(“名称”字段)。
我的代码可以工作,但有一些奇怪的错误(图像加载的顺序不对,根本没有崩溃)如下:
@interface CollectionViewController () <UITextViewDelegate>
@property (nonatomic, strong) NSMutableArray *imageArray;
@property (nonatomic, strong) UIImageView *imageView;
@property (nonatomic, strong) PFObject *theName;
@end
@implementation CollectionViewController
- (instancetype) init { //INIT STUFF }
-(void) viewDidLoad { //VIEWDIDLOAD STUFF }
-(void) DataCalls {
PFQuery *getPhotos = [PFUser query];
[getPhotos findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSLog(@"Objects Are:%@", objects);
_imageArray = [[NSMutableArray alloc] initWithArray:objects];
for (PFObject* photo in objects ) {
PFFile *pictureFile = [photo objectForKey:@"profilePicture"];
_theName = [photo objectForKey:@"Name"];
[self.collectionView reloadData];
NSLog(@"Name is:%@", _theName);
[pictureFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
NSLog(@"Fetching image..");
[_imageArray addObject:[UIImage imageWithData:data]];
NSLog(@"Size of the _imageArray : %lu", (unsigned long)[_imageArray count]);
} else {
// Log details of the failure
NSLog(@"Error: %@ ", error);
}
}];
}
}
}];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"photo" forIndexPath:indexPath];
_imageView = (UIImageView *)[cell viewWithTag:200];
PFObject *imageObject = [_imageArray objectAtIndex:indexPath.row];
PFFile *imageFile = [imageObject objectForKey:@"profilePicture"];
[imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
if (!error) {
_imageView.image = [UIImage imageWithData:data];
}
}];
PFObject *nameText = [imageObject objectForKey:@"Name"];
NSLog(@"Name in the CV:%@", nameText);
cell.userName.text= imageObject[@"Name"];
return cell;
}发布于 2014-06-12 19:34:23
继续使用指针,不要切换到使用username链接东西。只需记住在查询中使用includeKey:返回完全填充的指针,例如:
PFQuery *query = [PFQuery queryWithClassName:@"ProfilePhotos"]
// apply any filters, here's how to filter by user:
// could just as easily be another user
PFUser *user = [PFUser currentUser];
[query whereKey:@"user" equalTo:user];
// this allows reading of user properties in the results
[query includeKey:@"user"];
[query orderByDescending:@"createdAt"];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (error) {
NSLog(@"Error.");
} else {
PFFile *file = object[@"imageFile"];
PFUser *pictureUser = object[@"user"];
NSString *name = pictureUser[@"Name"];
}
}];发布于 2014-06-12 17:56:56
试试这个,应该管用的。
PFQuery *query = [PFQuery queryWithClassName:@"ProfilePhotos"];
[query whereKey:@"user" equalTo:desiredUsername];
[query orderByDescending:@"createdAt"];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (error) {
NSLog(@"Error.");
} else {
PFFile *file = [object objectForKey:@"imageFile"];
//Now you can pass it to the image view to display the image
}
}];https://stackoverflow.com/questions/24189349
复制相似问题