我正在开发一个应用程序来帮助我理解 OBJECTIVE-X/OSX。
该应用程序只需连接到 Facebook 并使用NSUserNotification
. 它工作正常,但现在我想添加一些用户界面。
为了使示例更简单,我想更新一个标签 ( NSTextField
) 以显示 Facebook 连接的状态。
正在连接……</p>
连接的
失败的
我在一个文件中有以下代码FacebookRequest.m
- (void) connectFacebook{
if(self.account == nil){
self.account = [[ACAccountStore alloc]init];
}
ACAccountType *facebookAccount = [self.account
accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSDictionary *options = @{
ACFacebookAppIdKey: @"MY_CODE",
ACFacebookPermissionsKey: @[@"email",
@"user_about_me",
@"user_likes",
@"manage_notifications",
@"user_activities"],
ACFacebookAudienceKey: ACFacebookAudienceFriends
};
[self.account requestAccessToAccountsWithType:facebookAccount
options:options
completion:^(BOOL success, NSError *error){
if(success){
NSArray *accounts = [self.account accountsWithAccountType:facebookAccount];
self.account = [accounts lastObject];
}
else{
NSLog(@"Erro %@", [error description]);
}
}];
}
以下是我的AppDelegate.m
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[self.statusFacebook setStringValue:@"Connecting…"];
FacebookRequest *request = [[FacebookRequest alloc]init];
[request connectFacebook];
}
请求完成并且我有帐户后,更新 UI 的最佳方式是什么?
我遇到了麻烦,因为请求是异步的,我无法在requestAccessToAccountsWithType
块内返回任何值。还有一点是,如果我在它后面加上一些“ifs”来检查我的帐户是否为nil,它将在块执行完毕之前执行,所以帐户仍然是nil
.
谢谢!
PS.:如果英文不够清楚,请见谅。