2016-08-16 1 views
0

Facebookに写真の情報を取得する機能があります。私はそれを別のクラスに追加し、ボタンのターゲット関数をそのクラス関数に設定することによって抽象化しようとします。ボタンのターゲットメソッドを別のクラスの関数に設定する

だから私は、シングルトンクラスに

class FacebookManager { 

static let sharedInstance = FacebookManager() 

func getAlbums() { 

    var request: FBSDKGraphRequest = FBSDKGraphRequest.init(graphPath: "/\(facebookID!)/albums", parameters: ["fields": "cover_photo, name, description"]) 
    request.startWithCompletionHandler({ (connection, result, error) -> Void in 
     // do stuff 
    }) 

} 

dummyButton?.addTarget(FacebookManager.self, action: Selector("getAlbums"), forControlEvents: .TouchUpInside) 

その関数を呼び出しますが、ボタンをタップした後、私はエラー

を取得ボタンののViewControllerのメソッドを持っています2016-08-17 00:12:21.599 Lovrr [11807:3832289] *** NSForwarding:警告:クラス 'app.FacebookManager'のオブジェクト0x10717c888はn OTはmethodSignatureForSelectorを実装: - トラブルを控え 認識されていないセレクタ+ [app.FacebookManagerはgetAlbums] stackoverflowの中にいくつかのトピックに

私はFacebookManagerでサブクラス化NSObjectのアドバイスを見ました。これを実行した後、私は別のエラーに取得

[app.FacebookManager getAlbums]:起因してアプリを終了*** 13:::49.469アプリ[3834005 11892]認識されていないセレクタは、クラス0x1047026f0 2016年8月17日00に送られますキャッチされない例外 'NSInvalidArgumentException'、理由: '+ [app.FacebookManager getAlbums]:クラス0x1047026f0に送信され、認識されないセレクター'

私はきちんとやりたい方法?

答えて

1

あなたのターゲットが間違っている:

dummyButton?.addTarget(FacebookManager.self, action: Selector("getAlbums"), forControlEvents: .TouchUpInside)

FacebookManager.selfは静的です。 getAlbumsはクラスメソッドです。ちょうど素晴らしい作品

dummyButton?.addTarget(FacebookManager.sharedInstance, action: Selector("getAlbums"), forControlEvents: .TouchUpInside)

+0

:=> 認識されていないセレクタ変更する

お試しください!どうもありがとう! –

+0

@AlexeyKよろしくお願いします。正しいと答えてください。 – anhtu

関連する問題