不推荐使用logInWithReadPermissions(_:handler :)':使用logInWithReadPermissions:fromViewController:handler:而不是

时间:2016-05-09 01:52:03

标签: xcode swift handler

使用最新的XCode,我收到此错误:

'logInWithReadPermissions(_:handler:)' is deprecated:
 use logInWithReadPermissions:fromViewController:handler: instead'

我如何重新格式化代码?这是它的全部功能:

@IBAction func fbBtnPressed(sender: UIButton!) {
        let facebookLogin = FBSDKLoginManager()

        facebookLogin.logInWithReadPermissions(["email"]) {
           (facebookResult: FBSDKLoginManagerLoginResult!,facebookError: NSError!) in
            print("Facebook login failed. Error \(facebookError)")
        }
 }

3 个答案:

答案 0 :(得分:1)

Xcode 8.2 beta(8C30a):

    fbLoginManager.logIn(withReadPermissions:["email"], from: self, handler: {

        (result, error) -> Void in

        if (error == nil){
            let fbloginresult : FBSDKLoginManagerLoginResult? = result

            if(fbloginresult?.isCancelled)! {
                //Show Cancel alert
            } else if(fbloginresult?.grantedPermissions.contains("email"))! {
                //self.returnUserData()
                //fbLoginManager.logOut()
            }
        }
    })

答案 1 :(得分:0)

把它想出来!如果有人潜伏在这篇文章中,这里是新代码:

 @IBAction func fbBtnPressed(sender: UIButton!) {
        let facebookLogin = FBSDKLoginManager()

        facebookLogin.logInWithReadPermissions(["email"],     fromViewController: self) { (facebookResult:     FBSDKLoginManagerLoginResult!, facebookError: NSError!) -> Void in
            print("Facebook login failed. Error \(facebookError)")
        }
    }

答案 2 :(得分:0)

如果您的 var posts = [Post]()// put this outside of viewDidLoad //put the below in viewDidLoad DataService.ds.REF_POSTS.observeEventType(.Value, withBlock: { snapshot in print(snapshot.value) self.posts = [] if let snapshots = snapshot.children.allObjects as? [FDataSnapshot] { for snap in snapshots { if let postDict = snap.value as? Dictionary<String, AnyObject> { let key = snap.key let post = Post(postKey: key, dictionary: postDict) self.posts.append(post) } } } self.postTableView.reloadData() }) 函数位于视图控件类中,只需将fbBtnPressed传递给self参数。

fromViewController

尽管如此,在Swift和Obj-C中鼓励你的函数名称优先考虑可读性而不是紧凑。例如,我将命名您的按钮处理程序facebookLogin.logInWithReadPermissions(["email"], fromViewController: self) { ... } 。它更长但更具可读性。