对 LoginManager Facebook sdk swift 的模糊引用
Posted
技术标签:
【中文标题】对 LoginManager Facebook sdk swift 的模糊引用【英文标题】:Ambiguous reference to LoginManager Facebook sdk swift 【发布时间】:2016-11-07 13:47:33 【问题描述】:我已经在 xcode8 的 ios 项目中手动集成了 facebook-sdk-swift,文档 [https://developers.facebook.com/docs/swift/getting-started].我收到错误
"对成员 logIn(_:viewController:completion:) 的不明确引用"
我的代码是
loginManager.logIn(["public_profile","email"], viewController: self) loginResult in switch loginResult case .Failed(let error): print(error) case .Cancelled: print("User cancelled login.") case .Success(let grantedPermissions, let declinedPermissions, let accessToken): print("Logged in!")
有什么帮助吗?
【问题讨论】:
Quickfix 应该会给你一个提示。可能您需要将第一个参数命名为loginManager.logIn(argumentDescription: ["public_profile","email"], viewController:...
【参考方案1】:
有效的 Swift 3 代码:
let loginManager = LoginManager()
loginManager.logIn(readPermissions: [.publicProfile], viewController: nil) loginResult in
switch loginResult
case .failed(let error):
print(error)
case .cancelled:
print("User cancelled login.")
case .success( _, _, _):
print("Logged in!")
【讨论】:
【参考方案2】:为权限提供枚举值,不要设置 viewController。
//...
loginManager.logIn([.publicProfile, .email], viewController: nil) results in
//...
【讨论】:
【参考方案3】:解决了我的问题,我以字符串格式传递的权限,快速编译器不允许look here
【讨论】:
【参考方案4】:对于那些遵循"Facebook Login in Swift - Getting Started"指南并偶然发现这个问题的人,您应该将.PublicProfile替换为.publicProfile,LoginResult中的大小写也以小写字母开头,所以也替换它们
【讨论】:
【参考方案5】:XCode 12+:从 Cocoapods 版本切换到 Swift Package Manager 解决了这个问题。
【讨论】:
以上是关于对 LoginManager Facebook sdk swift 的模糊引用的主要内容,如果未能解决你的问题,请参考以下文章
react-native-fbsdk / Facebook iOS SDK - 未定义不是对象(评估'LoginManager.logInWithReadPermissions')