我使用的是facebookcore(我认为问题出在那里),当我试图编译时,出现错误“cannot convert value of type(_, _) -> ()
to expected argument typeUserProfile.Completion
”。
错误出现在第一行,代码是
UserProfile.loadCurrent() { (userProfile, error) in
guard let userProfile = userProfile else {
completion(profile: nil, error: Error(domain: "FacebookLoginManager", code: 333, userInfo: ["description" : "Error al obtener el perfil del usuario"]))
return
}
completion(profile: userProfile, error: error)
}
UserProfile.Completion
代码是public typealias Completion = (FetchResult) -> Void
代码是
extension UserProfile.FetchResult {
internal init(sdkProfile: FBSDKProfile?, error: Error?) {
if let error = error {
self = .failed(error)
} else if let sdkProfile = sdkProfile {
let profile = UserProfile(sdkProfile: sdkProfile)
self = .success(profile)
} else {
let error = NSError(domain: "", code: 42, userInfo: nil)
self = .failed(error)
}
}
}
最佳答案
通过查看facebookcore文档,似乎loadCurrent()
的完成闭包是FetchResult
类型,它是一个枚举:(FetchResult) -> Void
而不是:(UserProfile?,Error?) -> Void
你应该这样改:
UserProfile.loadCurrent() { (fetchResult) in
UserProfile.loadCurrent { (fetchResult) in
switch fetchResult {
case .success(let userProfile):
completion(profile: userProfile, error: nil)
case .failed(let error):
completion(profile: nil, error: Error(domain: "FacebookLoginManager", code: 333, userInfo: ["description" : "Error al obtener el perfil del usuario"]))
}
}
}
关于swift - 使用Swift 3无法将类型'(_,_)->()'的值转换为预期的参数类型'UserProfile.Completion',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45138773/