2015-06-19 5 views
0

Я новичок в Swift и пытаюсь получить доступ к массиву «problemSolved», который добавляется во время игры в моем основном классе GameController, из другого класса. По какой-то причине массив не отображается в классе UIViewController, где я хочу показать все проблемы, решаемые в таблице. Я прочитал много примеров Singleton на сайте, чтобы узнать, будет ли это делать, но это не похоже. Любая помощь или совет здесь очень ценится!Singleton in swift недоступен из другого класса

class GameController: TileDragDelegateProtocol, CenterViewControllerDelegate { 
    static let sharedInstance = GameController() 
    var problemsSolved = Array<String>() 

    func onProblemSolved() { 
    problemsSolved.append(problem) 
    println("problemsSolved contains \(problemsSolved)") 
} 
} 

Во время игры можно увидеть в консоли, что массив будучи добавленным в порядке GameController. Но когда я пытаюсь получить доступ к нему в классе ViewController, содержимое отображается как empty [].

class SidePanelViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

@IBOutlet weak var tableView: UITableView! 

override func viewDidLoad() { 
tableView.reloadData() 
println("the array viewed from here is empty \(GameController.sharedInstance.problemsSolved)") 

} 
+2

Откуда возникает переменная «проблема», из которой вы добавляете массив? – Qbyte

+0

Привет, Qbyte, игра - игра, соответствующая словам. В GameController есть func dealWord(), который вытягивает слово из массива 'words' в классе уровня. (Кажется, я могу получить доступ с GameController в порядке, но не слишком GameController, следовательно, эта проблема!). Как только func dealWord() закончит там func onProblemSolved, который проверяет, разрешена ли проблема с помощью инструкции if else, и если это так добавляет слово к проблемеРасширенный массив. Мысли? – richc

ответ

0

На данный момент я только могу себе представить, что вы не вызываете

GameController.sharedInstance.onProblemSolved() 

, когда вы хотите добавить строку в problemsSolved.

Вы также должны учитывать статические функции и переменные в GameController.

Если это не решит вашу проблему, мне понадобится дополнительная информация о том, как и когда вы добавляете что-то в problemsSolved.

+0

Блестящий Qbyte, это была моя ошибка. Спасибо! – richc

+0

Добро пожаловать! Не могли бы вы пометить ответ как «правильный»? Таким образом, другие люди могут видеть ваш вопрос таким, как он был решен. – Qbyte

Смежные вопросы