使用最新的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)")
}
}
答案 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) { ... }
。它更长但更具可读性。