在Swift中调用Facebook代理

3

我该如何使用Swift调用 Facebook 的代理?Xcode没有自动完成功能,我不知道该如何使用它。

import UIKit

class ViewController: UIViewController,FBLoginViewDelegate {

    @IBOutlet var fbLoginView : FBLoginView

    override func viewDidLoad() {
        super.viewDidLoad()

        self.fbLoginView.delegate = self
        self.fbLoginView.readPermissions = ["public_profile", "email", "user_friends"]

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // Facebook Delegates



}

你是在问如何“调用”它,也就是触发委托上的方法,还是如何“实现”它?实现它意味着你需要定义一个方法,在委托被调用时会执行该方法。 - drewag
抱歉,我想问如何实现它 :) Xcode没有自动完成我不知道Swift中委托方法的语法。在Objective-C中: loginViewFetchedUserInfo:user:/ loginViewShowingLoggedInUser:/ loginViewShowingLoggedOutUser / loginView:handleError但是用Swift呢? - dpbataller
Xcode 6(beta 1)目前未能在 Swift 中自动补全缺失的协议实现 - 参见https://dev59.com/emAf5IYBdhLWcg3w52A_#24171930。 - Jiaaro
1个回答

7

我将给出一个示例翻译,并解释一下,这样你就能够翻译其余的委托方法:

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user: (id<FBGraphUser>)user;
  1. 方法名以“loginViewFetchedUserInfo”开头,保持不变。
  2. 参数是类型为“FDBLoginView”的指针。这将被翻译为可选类型的FBLoginView,因为它可以为nil。惯例是将其设置为隐式解包可选项,因此它将变成FBLoginView!
  3. 在Swift中,协议本身就是一种类型,因此用户参数将简单地变为FBGraphUser
  4. 在Swift方法中,第一个参数被假定为仅是内部名称,因此参数可以命名为任何名称,但为了一致性,我们将使用相同的名称:“loginView”。
  5. 在Swift方法中,第二个参数被假定为内部和外部参数。在Objective-C版本中,它们恰好相同,因此我们只需使用它一次,Swift将使其成为内部和外部名称。
func loginViewFetchedUserInto(loginView : FBLoginView!, user: FBGraphUser)

谢谢drewag!! 这正是我所需要的。 - dpbataller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接