gpt4 book ai didi

iOS:UIImage 不可分配(FBSDKGraphRequest)

转载 作者:行者123 更新时间:2023-11-28 21:34:27 25 4
gpt4 key购买 nike

我正在构建一个用于检索用户个人资料图片的函数。我正在使用 facebook 的 FBSDKGraphRequest,但是当我尝试使用检索到的数据将其分配到图片中时,我收到一个我不明白的错误:Variable is not assignable (missing _block type specifier)

我的函数如下:

- (UIImage *)getProfilePicture: (NSString *)ID
{

FBSDKGraphRequest *requestFriends = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/friends" parameters:@{@"fields": @"name"}];
FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init];

//[connection addRequest:requestFriends completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)

UIImage* profilePic;


NSString* requestPath = @"me/?fields=name,location,gender,birthday,relationship_status,picture,email,id";
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"picture"}];
[connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError* error)
{
NSDictionary* data = (NSDictionary *)result;
NSDictionary* picture = [data objectForKey:@"picture"];
NSDictionary* pictureData = [picture objectForKey:@"data"];
NSString* pictureURL = [pictureData objectForKey:@"url"];
profilePic = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:pictureURL]]];
}];

return profilePic;
}

最佳答案

错误是告诉你在 profilePic 声明之前添加 __block

__block UIImage* profilePic;

但是,它不会解决您的问题。

关键是你的-(UIImage *)getProfilePicture: (NSString *)ID方法是同步的,而 FBSDKGraphRequest 调用(带有完成 block )是异步的。

我可能建议您做的是向您的方法添加一个 UIImage 回调,或者使用委托(delegate)模式在 Facebook SDK 调用完成 block 时返回图像。

另一种解决方案,但不太实用:使调用完全同步,您的方法将等到 FBSDKGraphRequest 完成,然后返回一个 UIImage,但它会阻塞运行该方法的线程(可能是主要的)。

关于iOS:UIImage 不可分配(FBSDKGraphRequest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34475632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com