2017-07-17 67 views
0

假设在ViewController类中有一个全局字符串变量。在此ViewController类的另一个扩展文件(ViewControllerExtension.swift)中,我希望能够在函数内对此全局变量进行调整。引用UIViewController中的全局字符串变量扩展名

眼下,存在其中需要全局字符串变量作为输入的扩展功能:

func doSomething(inputString: String){ 
//something is being done and the adjustment will be reflected in the ViewController instance. 
} 

我的问题是:

  1. 是否有可以访问的一种方式ViewController的全局字符串变量,而不必通过函数来​​引用它,因为它的输入?
  2. 什么是一个好设计的方式去做这件事?经验丰富的程序员如何去解决这个问题?

在此先感谢。

回答

2

我认为你应该做的是使用一个变量a的didSet方法, 它是这样的:

var Name = "" { 
    didSet{ 
     print("The name has been change") 
    } 
} 

现在记住,你可以说

class Your_class { 
    var Name = "" { 
     didSet{ 
      //something is being done and the adjustment will be reflected in the ViewController instance. 
     } 
    } 

} 

extension Your_class { 
    self.Name = "Paco" 
} 

现在这实际上会做同样的事情,这对于swift来说更合适一些,但最终你所做的事情看起来很好。我在你的代码中看到的问题是,如果你调用该函数,甚至是我刚刚发布的内容,并且VC不在屏幕上,这将不起作用,如果是这种情况,请发布更多信息,以便我们可以帮助你。 ;)

0

我对你想达到什么感到困惑,但是,你没有定义一个全局变量。一个全局变量被定义在你的视图控制器范围之内,所以你可以从你的项目的任何地方访问它。

个人而言,我不认为全局变量是必要的。苹果提供的数据传输方式有很多种。您可以使用segue或展开将数据从视图控制器传递到另一个视图控制器。你也可以有一个委托来广播函数调用。您也可以使用通知中心来执行此操作。除非绝对需要,否则我不建议您使用全局变量。