在 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