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