问题描述
|
我正在与Facebook集成的一个新项目。该应用程序必须向Facebook发出不同的请求。 SDK提供了一个委托来处理每个请求。现在,我需要一个自定义委托来处理某些不同的请求。有人可以提示我如何实现这一目标吗?
解决方法
Facebook类公开了许多返回FBRequest *对象的方法,并且每个方法都有一个委托参数,只要它符合FBRequestDelegate协议,就可以是您喜欢的任何对象。
因此,要么只有一个自定义类,就可以为每种类型的请求实现协议。或者,只有一个实现协议的类,并且在这些方法中,您需要检查收到的FBRequest以确定要执行的操作。因此,例如,如果您要致电:
Facebook *fb = [[Facebook alloc] initWithAppId:kYourFacebookAppId];
[params setObject:[NSNumber numberWithBool:YES] forKey:@\"PostComment\"];
[fb requestWithParams:params andDelegate:delegate];
[fb release];
然后在委托中,您可以执行以下操作:
- (void)request:(FBRequest *)request didLoad:(id)result {
// Make a decision based on the request
if ([[request.params objectForKey:@\"PostComment\"] boolValue]) {
// Here we should post a comment.
}
}
但是,我个人不会这样做,因为它将很难维护。更好的做法是为每个与Facebook相关的任务编写单独的类。这些类可以从FBDelegate基类继承,该基类执行常见的操作,例如错误处理。