Доступ к экземпляру класса в Swift
У меня есть класс Graph, который является UIView, и я инициализирую его внутри mainVC.swift
:
class MainVC : UIViewController{
let graph : Graph!
override func viewDidLoad(){
super.viewDidLoad()
let data_x : [Double] = [...]
let data_y : [Double] = [...]
...
graph = Graph(frame: CGRect(...), color: ..., xData: data_x, yData: data_y, darkMode: ...)
view.addSubview(graph)
...
}
Теперь я хотел бы получить доступ к функции внутри экземпляра класса, который я создал в MainVC в другом классе (для заполнения данных в TableView).
var g : Graph = MainVC.graph
возвращает "Граф элемента экземпляра не может использоваться для типа MainVC". Я также пытался использовать статическую переменную, но произошла ошибка.
3 ответа
Это один из способов, который я знаю, проверить это.
class MainVC {
let graph : Graph!
}
График - это сохраненное свойство, константа или переменная, которая хранится как часть экземпляра определенного класса. Поэтому вы пытались получить доступ к свойству экземпляра, а не к экземпляру класса.
В вашем классе MainVC сделайте переменную статической, которая содержит экземпляр
static var graph: Graph?
Затем сохраните экземпляр Graph в свойстве graph в классе Graph.
MainVc.graph = self
Теперь вы можете использовать в другом классе, где вы получаете доступ к экземпляру графа, как
MainVc.graph
Вы обращаетесь к переменной экземпляра класса, а не к его экземпляру.