2016-06-23 7 views
3

私はSwiftのnoobieです。 GameViewControllerまたはGameSceneのインスタンスをHelperClassに次のように渡したいと思います。 javaでは私はこれにObjectを使うことができました。これはSwiftでどのように行われますか?SwiftのJava Objectに相当するものは何ですか?

func getHighscores(leaderboardID: String, caller: **whatTypeHere**) { 
... 
} 

私はGameCenterから最高得点を得ると、基本的に正しい発信者に通知したいと思います。

答えて

3

"発信者"があなたが望む任意のタイプにしたいと思っています。 この場合、ここでは「AnyObject」タイプを使用する必要があります。 Documentation

0

そのクラスのインスタンスを渡したい場合は、そのクラスのインスタンスを渡すことができます。すべてのクラスはもちろんオブジェクトであり、UIViewControllersも例外ではありません。あなたはNSNotificationCenterを使用することができる何かのクラスを「通知」する必要がある場合は

getHighscores("str", caller: self) 

:あなたはGameViewControllerクラス内からそのメソッドを呼び出したい場合は

func getHighscores(leaderboardID: String, caller: GameViewController) { 
    // call some method in caller like 'caller.refreshHighScore()' 
} 

あなたはこのようにそれを行うことができます。あなたのためにここに resourceがあります。

1

AnyObjectは、Swiftの「could be anything」のタイプです。あなたが実際に望むものは、GameViewControllerとGameSceneの両方が実装するプロトコルを定義することです:

protocol HighScoreReceiver { 
    func gotNewScores(scores:[Int]) 
} 

class GameViewController: UIViewController, HighScoreReceiver { 
    func gotNewScores(scores: [Int]) { 
     // do something here 
    } 
} 

class GameScene: HighScoreReceiver { 
    func gotNewScores(scores: [Int]) { 
     // do something here 
    } 
} 

class Helper { 
    func getHighscores(leaderboardID: String, caller: HighScoreReceiver) { 
     //get the scores, then... 
     caller.gotNewScores(scores) 
    } 
} 
関連する問題