如何在swift 2.0(iOS)中的单例类中创建可全局访问的结构数据?

前端之家收集整理的这篇文章主要介绍了如何在swift 2.0(iOS)中的单例类中创建可全局访问的结构数据?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是iOS编程和swift的新手.我正在尝试创建一个单例类来存储我的全局数据.我的全局数据是结构和此结构的数组.我想只有一个这个类的实例,因此是一个单例类.全局数据应该可供所有ViewControllers访问和编辑.我一直在寻找,除了最后一部分,我几乎已经弄明白了.这是单例类:
  1. import Foundations
  2. class Global {
  3.  
  4. struct Info {
  5. var firstname:String!
  6. var lastname:String!
  7. var status:String!
  8.  
  9. init (firstname:String,lastname:String,status:String)
  10. {
  11. self.firstname=firstname
  12. self.lastname=lastname
  13. self.status=status
  14. }
  15. }
  16.  
  17. var testString: String="Test" //for debugging
  18. var member:[Info]=[]
  19.  
  20. class var SharedGlobal:Global
  21. {
  22. struct Static
  23. {static let instance = Global()}
  24. return Static.instance
  25. }
  26. }

现在我想从一些viewControllers访问这个singleton类的全局变量.当我在xcode中输入时:

  1. Global.SharedGlobal.

我有两个选项,一个是数组成员,另一个是testString.结构信息不可用.但是,如果我只是输入

  1. Global.

然后我看到Global.Info和Global.SharedGlobal作为我的选择.

为什么我无法访问我的单例类中的结构(即Global.SharedGlobal.Info)?我错过了什么?我感谢任何反馈或帮助.非常感谢提前.

除非有一个非常具体的理由,否则你不需要像这样嵌套类.

让我们简化一下练习的代码

  1. struct Info {
  2. // No need for these properties to be Implicitly Unwrapped Optionals since you initialize all of them
  3. var firstname: String
  4. var lastname: String
  5. var status: String
  6.  
  7. init (firstname:String,status:String) {
  8. self.firstname=firstname
  9. self.lastname=lastname
  10. self.status=status
  11. }
  12. }
  13.  
  14. class Global {
  15.  
  16. // Now Global.sharedGlobal is your singleton,no need to use nested or other classes
  17. static let sharedGlobal = Global()
  18.  
  19. var testString: String="Test" //for debugging
  20.  
  21. var member:[Info] = []
  22.  
  23. }
  24.  
  25.  
  26. // Use the singleton like this
  27. let singleton = Global.sharedGlobal
  28.  
  29. // Let's create an instance of the info struct
  30. let infoJane = Info(firstname: "Jane",lastname: "Doe",status: "some status")
  31.  
  32. // Add the struct instance to your array in the singleton
  33. singleton.member.append(infoJane)

现在对我来说是有道理的.一个结构,包含一些用户的信息,我可以创建它们的任何数字实例 – 和一个单独的类,唯一的,我可以存储这些信息实例,这个单例可以在任何地方使用.

这是你想要达到的目标吗?

猜你在找的Swift相关文章