2017-07-17 130 views
1

我正在使用FacebookCore(我認爲問題存在),並且出現錯誤「當我嘗試編譯時,無法將類型(_, _) ->()的值轉換爲預期參數類型UserProfile.Completion」。無法將類型'(_,_) - >()'的值轉換爲預期參數類型UserProfile.Completion'Swift 3

錯誤出現在第一行,並且代碼

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 

而且FetchResult代碼

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) 
     } 
    } 
} 

回答

3

通過查看FacebookCore文檔,它看起來像是的完工關閉10是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"])) 
     } 

    } 
} 
+0

FetchRsult是初始化用戶配置。 FetchResult.swift,在pod FacebookCore中。 'public enum FetchResult {case}成功(UserProfile) 大小寫失敗(錯誤)}' –

+0

@CarlosGutiérrez檢查了FacebookCore文檔後,這應該是一個更準確的答案! – Thomas

相關問題