我有以下方法,它基本上试图从facebook / twitter获取用户个人资料图片。问题是结果将在委托中返回,因此profilePicture结果是在这两种方法调用的委托中获得的。我该如何处理?
- (NSString *) profilePicture
{
NSString * result;
if (facebook.isSessionValid){
[facebook requestWithGraphPath:@"me/picture"
andParams:nil
andHttpMethod:@"GET"
andDelegate:self];
} else if ([_twitter isAuthorized]){
[_twitter getUserInformationFor:[_twitter username]];
}
return result;
}
答案 0 :(得分:1)
您将委托设置为self
。因此,您需要实现facebook类在此类中指定的协议方法。
在Facebook API中,协议名为FBRequestDelegate
,您需要实施的方法是request:didLoad:
示例:取自this page
- (void)request:(FBRequest *)request didLoad:(id)result {
if ([result isKindOfClass:[NSArray class]]) {
result = [result objectAtIndex:0];
}
NSLog(@"Result of API call: %@", result);
}
答案 1 :(得分:0)
通过调用“[facebook requestWithGraphPath:@”me / picture“andParams:nil andHttpMethod:@”GET“andDelegate:self];”你应该创建一个FBRequest的对象。
您可以自定义FBRequest,添加新的typedef
typedef enum
{
...
currentactionProfilePictureAccess,
...
}currentaction;
@interface FBRequest:<superclass>
{
.....
currentaction currentactiontype;
}
.....
@property(nonatiomic,asign) currentaction currentactiontype;
....
@end
也在实施中合成它。
在创建请求时,请指定您正在执行的请求类型(currentactiontype)。
当结果出现“ - (void)request:(FBRequest *)request didLoad:(id)result 检查请求和进程的类型。
if(request.currentactiontype==currentactionProfilePictureAccess)
{
//call what ever you want.
}