Swift 유저 정보 받는 핸들러 질문

제가 로그인 성공 후에 meTaskWithCompletionHandler를 이용해서 유저정보를 받아올려고 아래와 같이 짰는데
핸들러 부분에서 자꾸 오류가 나더군요… 핸들러 자동완성 참조해서 result:KOUser 랑 error:NSErorr 이렇게 파라메터를 지정했는데 인자가 맞는게 아니라고 뜨더라구요 ㅠㅠ

어디 참고할만한 구글링 문서도 잘 안나오고 해서 여기에 여쭤봅니다 ㅠㅠ

오류는 아래와 같이 나고…
/Users/parkdongju/Desktop/ggbb2/ggbb/ggbb/ViewController.swift:66:31: Cannot invoke ‘meTaskWithCompletionHandler’ with an argument list of type ‘((KOUser!, NSError!) → _)’

아래는 코드입니다…

아직 초보라 핸들러 사용법을 잘 몰라서 그런지… 잘안되네요

func invokeLoginWithTarget() {
KOSession.sharedSession().close()
KOSession.sharedSession().openWithCompletionHandler({(error:NSError!) → Void in
if(KOSession.sharedSession().isOpen()) {
self.performSegueWithIdentifier(“afterUserLoginNotGetInfo”, sender: self)
NSNotificationCenter.defaultCenter().postNotificationName(self.LoginSuccessNotification, object: self)
print(KOSession.sharedSession().accessToken)

           //여기가 문제입니다...
            KOSessionTask.meTaskWithCompletionHandler({ (result:KOUser!, error:NSError!) in
                if(result){
                    print("result is ok")
                }
                else{
                    print("result is not ok")
                }
            })
        } else {
            var alertView = UIAlertView(title: "에러", message: error.localizedDescription, delegate: nil, cancelButtonTitle: "확인")
            alertView.show()
            
        }
    })
}

@9109271 SDK에 swift 샘플이 들어 있는데요, 샘플을 한번 살펴보세요~

저 부분에 사용되는 핸들러는 KOSessionTaskCompletionHandler 인데요, swift 에서의 타입은 다음과 같습니다.

(AnyObject!, NSError!) -> ()

따라서 result 의 type 은 KOUser! 가 아니고 AnyObject! 여야 합니다.
성공 여부 확인 부분을 이렇게 바꾸시면 좋을 것 같네요.

if let user = result as? KOUser {
    NSLog("Success: id is \(user.ID)")
}
1개의 좋아요