2016-06-23 9 views
3

Я noobie в Свифт. Я хотел бы передать экземпляр GameViewController или GameScene в HelperClass следующим образом. В java я мог использовать для этого Object. Как это делается в Свифт?Что такое эквивалент объекта Java в Swift?

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

поэтому в основном я хочу уведомить нужного абонента, когда я получу рекорды из GameCenter.

ответ

3

Как я понимаю, вы хотите, чтобы «вызывающий» был любым желаемым типом. В этом случае вам нужно использовать здесь тип «AnyObject». Documentation

0

Если вы хотите сдать экземпляр этого класса, вы можете сделать это как таковое. Конечно, все классы - это объекты, а UIViewControllers не являются исключением.

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

Если вы хотите, чтобы вызвать этот метод из класса GameViewController вы можете сделать так, как это:

getHighscores("str", caller: self) 

Если вам нужно «уведомить» класс то, что вы можете использовать NSNotificationCenter. Вот вам resource, чтобы вы начали.

1

AnyObject - это тип для «может быть что угодно» в Swift. Вероятно, вы хотите определить протокол, который реализуется как 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) 
    } 
} 
Смежные вопросы