UIImage数据方法返回nil

时间:2014-09-03 22:58:56

标签: ios objective-c uiimage parse-platform

我正在调用一个方法,该方法使用parse连接到数据库以获取图像。 一切顺利, in 方法,但不知何故,当我返回值时,它总是返回一个空(nil)UIImage

这是我的方法:

- (UIImage *)getImage:(NSString *)objectId
{
  __block UIImage *image = nil;
  if(![objectId  isEqual:@""]){
    PFQuery *query = [PFQuery queryWithClassName:@"UserPhoto"];
    [query whereKey:@"objectId" equalTo:objectId];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
      if(!error){
        for (PFObject *object in objects) {
          PFFile *imageFile = [object objectForKey:@"imageFile"];
          [imageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
            if (!error) {
              image = [UIImage imageWithData:imageData];
              NSLog(@"self.image: %@",self.image); //logs UIImage
            }
            else {
              NSLog(@"Error: %@ %@", error, [error userInfo]);
            }
          }];
        }
      } else{
        NSLog(@"Error: %@ %@", error, [error userInfo]);
      }

    }];

  }
  return image; //returns nil
}

为什么会这样?

我试图把图像放到一个全局变量中,也没用,把它存放在数组中,也没用。我很好奇看到解决方案。

1 个答案:

答案 0 :(得分:0)

假设您希望使用返回的图像更新代码中的某个ImageView。

[imageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
            if (!error) {
              image = [UIImage imageWithData:imageData];
              NSLog(@"self.image: %@",self.image); //logs UIImage
              [self updateImageViewWithImage:image];
            }
            else {
              NSLog(@"Error: %@ %@", error, [error userInfo]);
            }
          }];

*提示:UI更改仅适用于主线程。