FacebookのiOSAPIドキュメントから、グラフの友達リスト、または現在ログインしているユーザーの詳細を要求する2つのメソッドを作成しました。
- (IBAction)showMyFriends:(id)sender {
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[[delegate facebook] requestWithGraphPath:@"me/friends" andDelegate:self];
NSLog(@"Getting friends list");
}
- (IBAction)showMyDetails:(id)sender {
AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[[delegate facebook] requestWithGraphPath:@"me" andDelegate:self];
NSLog(@"Getting my info");
}
これまでのところ合理的に聞こえます。これらの呼び出しから応答するデリゲートメソッドは次のとおりです。
- (void)request:(FBRequest *)request didLoad:(id)result
{
NSLog(@"Got a request");
// Print out friends
// NSArray * items = [NSArray alloc];
// items = [(NSDictionary *)result objectForKey:@"data"];
// for (int i=0; i<[items count]; i++) {
// NSDictionary *friend = [items objectAtIndex:i];
// long long fbid = [[friend objectForKey:@"id"]longLongValue];
// NSString *name = [friend objectForKey:@"name"];
// NSLog(@"id: %lld - Name: %@", fbid, name);
// }
// Print out self username
NSString *username = [result objectForKey:@"name"];
NSLog(@"Username is %@", username);
helloGreeting.text = [NSString stringWithFormat:@"Hello %@", username];
}
質問:ではdidLoad
、現在の呼び出しがどのグラフ要求に関連しているかをどのように確認できますか?たとえば、上記のコードでは、友達リストを印刷するか、ユーザー名を印刷する必要があるため、リクエストの種類に応じて、場合によってはコードをラップする必要がある/switchステートメントをイメージします。
APIで明らかなものを見つけることができませんでしたが、関連する応答コードのみが実行されるようにするための最良のアプローチは何ですか?