在 Swift 中调用 Facebook 代表

Posted

技术标签:

【中文标题】在 Swift 中调用 Facebook 代表【英文标题】:Call Facebook delegates in Swift 【发布时间】:2014-06-12 16:57:36 【问题描述】:

如何使用 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




【问题讨论】:

您是在问如何调用它,如触发委托上的方法,还是如何实现它?实现它意味着您将定义在委托上调用某些内容时将调用的方法 对不起,我在问如何实现它:) Xcode 不自动完成,我不知道 Swift 委托方法的语法。在目标 C 中: loginViewFetchedUserInfo:user:/ loginViewShowingLoggedInUser:/ loginViewShowingLoggedOutUser/loginView:handleError 但在 Swift 中? Xcode 6 (beta 1) 目前没有自动完成缺少的协议实现(在 swift 中) - 请参阅 ***.com/questions/24171857/… 【参考方案1】:

我将给出一个翻译示例并进行解释,以便您能够翻译其余的委托方法:

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user: (id<FBGraphUser>)user;
    方法名称以“loginViewFetchedUserInfo”开头。保持不变 该参数是“FDBLoginView”类型的指针,因为它可以为 nil,所以将被转换为 FBLoginView 类型的可选项。约定是使其成为隐式展开的可选,因此它将变为FBLoginView! 在 Swift 中,协议本身就是类型,因此用户参数将变为简单的 FBGraphUser。 swift 方法中的第一个参数被假定为只是一个内部名称,因此参数可以命名为任何名称,但为了保持一致性,我们将其命名为:“loginView” swift 方法中的第二个参数假定为内部和外部。在 Objective-C 版本中,它们恰好是相同的,所以我们可以简单地使用它一次,Swift 会使其成为内部和外部名称

这给我们留下了这个翻译:

func loginViewFetchedUserInto(loginView : FBLoginView!, user: FBGraphUser)

【讨论】:

谢谢drawag!!这正是我所需要的

以上是关于在 Swift 中调用 Facebook 代表的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中登录 Facebook。 “收到未知方案:授权”

如果用户已经使用 facebook 登录,则使用 swift 调用 segue

Swift - Firebase 在 Firestore 中获取 Facebook 好友 UID

Facebook api ios-sdk,代表不工作,没有调用 fbDidLogin

使用 PFFacebookUtilsV4 Cocoapods 在 Swift 中获取 Facebook 用户详细信息

Facebook 应用程序邀请 Swift 没有通知