在 UIViewController Extension 中引用全局字符串变量
referring a global string variable in UIViewController Extension
假设 ViewController class 中有一个全局字符串变量。在这个 ViewController class 的另一个扩展文件 (ViewControllerExtension.swift) 中,我希望能够在一个函数中对这个全局变量进行调整。
现在,扩展中有一个函数将全局字符串变量作为输入:
func doSomething(inputString: String){
//something is being done and the adjustment will be reflected in the ViewController instance.
}
我的问题是:
- 有没有一种方法可以访问 ViewController 的全局字符串变量,而不必在输入时通过函数来引用它?
- 解决这个问题的好的设计方法是什么?经验丰富的程序员将如何解决这个问题?
提前致谢。
我对您要实现的目标感到很困惑,但是您没有定义全局变量。全局变量定义在视图控制器范围之外,因此您可以从项目中的任何地方访问它。
就我个人而言,我认为不需要全局变量。 Apple 提供了多种方式来传递数据。您可以使用 segue 或 unwind 将数据从一个视图控制器传递到另一个视图控制器。您还可以有一个委托来广播函数调用。您也可以使用通知中心来执行此操作。除非绝对需要,否则我不建议您使用全局变量。
我认为你应该做的是使用变量的 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 但最后你所做的似乎很好。我在您的代码中看到的问题是,如果您调用该函数或什至我刚刚 posted 并且 VC 不在屏幕上,这将不起作用,如果是这种情况,请post 更多信息,以便我们为您提供帮助。 ;)
假设 ViewController class 中有一个全局字符串变量。在这个 ViewController class 的另一个扩展文件 (ViewControllerExtension.swift) 中,我希望能够在一个函数中对这个全局变量进行调整。
现在,扩展中有一个函数将全局字符串变量作为输入:
func doSomething(inputString: String){
//something is being done and the adjustment will be reflected in the ViewController instance.
}
我的问题是:
- 有没有一种方法可以访问 ViewController 的全局字符串变量,而不必在输入时通过函数来引用它?
- 解决这个问题的好的设计方法是什么?经验丰富的程序员将如何解决这个问题?
提前致谢。
我对您要实现的目标感到很困惑,但是您没有定义全局变量。全局变量定义在视图控制器范围之外,因此您可以从项目中的任何地方访问它。
就我个人而言,我认为不需要全局变量。 Apple 提供了多种方式来传递数据。您可以使用 segue 或 unwind 将数据从一个视图控制器传递到另一个视图控制器。您还可以有一个委托来广播函数调用。您也可以使用通知中心来执行此操作。除非绝对需要,否则我不建议您使用全局变量。
我认为你应该做的是使用变量的 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 但最后你所做的似乎很好。我在您的代码中看到的问题是,如果您调用该函数或什至我刚刚 posted 并且 VC 不在屏幕上,这将不起作用,如果是这种情况,请post 更多信息,以便我们为您提供帮助。 ;)