2015-06-19 127 views
2

即时新的即时。我想问你,如果我走对了路。更改静态变量

我有这样的事情:

class ViewController: UIViewController { 

    struct myVars { 
     var static short_text = "" 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     loadData() 
     println(short_text) 
    } 

    func loadData() { 
     myVars.short_text = "Hello world!" 
    } 
} 

此代码的工作。我有“Hello world!”字符串中的变量,我可以打印它。但是,IAM问你是否这是一个很好和清楚的方式来重新定义静态var?我这样做是因为我想在代码中使用这个变量。

谢谢你的回答。

PS:最后的方法要困难得多。仅作为示例,这是简短的代码。

+0

谢谢!我不太擅长用英语来描述它,以及我想要做的。但简单地说:我在loadData函数中加载了很多数据,并且我需要在不调用loadData的情况下在另一个函数中使用这些数据。因为数据曾经加载过。它更好地使用内部变量和松散的结构? –

+0

[你如何在视图控制器和Swift中的其他对象之间共享数据?](http://stackoverflow.com/questions/29734954/how-do-you-share-data-between-view-controllers-and -other-objects-in-swift) – nhgrif

+0

(a)我的意思是我使用内部变量short_text =“”,它不在里面的结构。感谢您的帮助 –

回答

1

如果您的目的是为其他类(即其他视图控制器)访问此实例ViewController的变量,则不必使用static。如果使该属性可以跨该类的多个实例访问,则只需使用static。我不认为这就是你想要的。

如果目的是到视图控制器之间的数据传递,我建议你参考:

如果你搜索“在视图控制器之间传递数据“,你会发现很多其他类似的链接。

底线,使用static是可能的,但可能不是你想要的。


两个旁注:

  1. 您使用的是static一个struct内。 Swift 1.2避免了这种模式的需要。如果你真的需要static(我不认为你需要在这里),你可以声明你的变量为static,消除struct

    static var shortText = "" 
    
  2. 我不认为你的struct使用意味着打开“按价值还是按参考价值”的讨论,但如果您这样做,我可能会向您推荐WWDC 2015视频Building Better Apps with Value Types in Swift