Доступ к экземпляру класса в 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
let mainVc = MainVC()
let graph = self.graph

Вы обращаетесь к переменной экземпляра класса, а не к его экземпляру.

Другие вопросы по тегам