2017-07-17 68 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或展開將數據從視圖控制器傳遞到另一個視圖控制器。你也可以有一個委託來廣播函數調用。您也可以使用通知中心來執行此操作。除非絕對需要,否則我不建議您使用全局變量。