我在尝试返回从Parse.com获取的UIImage时遇到以下代码时出错:
-(UIImage *)getUserImageForUser:(PFUser *)user {
PFFile *userImageFile = user[@"profilePic"];
[userImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:imageData];
[self.images setObject:image forKey:user.username];
return image;
}
}];
return nil;
}
错误是:不兼容的块指针类型将'UIImage *(^)(NSData * __ strong,NSError * __ strong)'发送到'PFDataResultBlock'类型的参数(又名'void(^)(NSData * __ strong, NSError * __ strong)')
如果我删除了块中的UIImage返回,则没有错误。不知道为什么会这样。我通过最后返回nil来覆盖所有基地。任何人都可以指点一下为什么会这样吗?
答案 0 :(得分:2)
因为您没有从代码块中返回任何内容。该代码块运行,就是这样,你不需要在那里返回任何东西。
如果您想对该图像执行某些操作,请在代码块中执行此操作。
例如:
[userImageFile getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
if (!error) {
UIImage *image = [UIImage imageWithData:imageData];
dispatch_async(dispatch_get_main_queue(), ^{
// do something with image on the main queue, like:
self.imageView.image = image
});
}
}];