2016-01-13 60 views
2

我有一個塊的目標C塊的目標C文件中聲明是這樣的:使用封閉斯威夫特被宣佈爲雨燕2.1

- (void) getUserCurrentProfile:(void (^)(UserInfo *userInfo,NSError * error)) callBack { 
if ([FBSDKAccessToken currentAccessToken]) { 
    //code here 
    }]; 
} 
斯威夫特文件

我把它叫做:

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
FBManager.getUserCurrentProfile({(userInfo:UserInfo?, error:NSError?) -> Void in 
    appDelegate.showHomeView() 
}) 

但我完全重新得到這個錯誤:

enter image description here

任何人都可以GI讓我知道嗎?

P/S:我讀過這個問題:Swift : Use closure compatible with Objective-C block。並做同樣的事情。但它不起作用

回答

1

getUserCurrentProfile是一種實例方法,您將其稱爲類方法。你應該(也許sharedInstance?)調用它的FBManager一個實例:

FBManager.sharedInstance.getUserCurrentProfile { userInfo, error in) 
    appDelegate.showHomeView() 
} 

錯誤說,它不能關閉轉換爲FBManager,而且是正確的,因爲你調用它作爲一類功能和編譯器期望和實例操作。上述呼叫也可以寫在咖喱函數調用中:

FBManager.getUserCurrentProfile(FBManager.sharedInstance) { userInfo, error in) 
    appDelegate.showHomeView() 
}