【问题标题】:Accessing class instance in swift快速访问类实例
【发布时间】:2017-06-29 11:48:02
【问题描述】:

我有一个 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 类型” 我也尝试过使用静态变量,但出现错误。

【问题讨论】:

    标签: ios swift instance swift-class


    【解决方案1】:

    这是我知道的检查方法之一。

    class MainVC {
       let graph : Graph! 
    }
    

    graph is a stored property is an constant or variable that is stored as part of an instance of a specific class。因此,您尝试访问的是实例属性而不是类的实例。

    在您的 MainVC 类中,将变量设为包含实例的静态变量

     static var graph: Graph?
    

    然后将Graph的实例存储在Graph类的graph属性中

      MainVc.graph = self
    

    现在您可以在访问图形实例的另一个类中使用,例如

      MainVc.graph
    

    【讨论】:

    • @codddeer123 很高兴为您提供帮助,如果有用,您可以接受。
    【解决方案2】:

    您正在访问一个类的实例变量,而不是它的实例。

    【讨论】:

    • 所以这个变量不包含对这个类的实例的引用?那我该怎么做呢?
    【解决方案3】:
    let mainVc = MainVC()
    let graph = self.graph
    

    【讨论】:

    • 然后试试 graph = self.graph,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多