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

我很新的iOS编程和迅速。 我正在尝试创build一个单例类来存储我的全局数据。 我的全局数据是一个结构和这个结构的数组。 我想只有这个类的一个实例,因此是一个单例类。 全局数据应该可以被所有ViewController访问和编辑。 我一直在四处寻找,除了最后一部分之外,我几乎已经想通了。 这里是单身人士课程:

import Foundations class Global { struct Info { var firstname:String! var lastname:String! var status:String! init (firstname:String, lastname:String, status:String) { self.firstname=firstname self.lastname=lastname self.status=status } } var testString: String="Test" //for debugging var member:[Info]=[] class var SharedGlobal:Global { struct Static {static let instance = Global()} return Static.instance } } 

现在我想从一些viewControllers访问这个单例类的全局variables。 当我在xcode中input:

  Global.SharedGlobal. 

我得到两个选项之一是数组成员 ,另一个是testString 。 结构信息不可用。 但是,如果我只是键入

  Global. 

那么我看到Global.InfoGlobal.SharedGlobal作为我的select。

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

除非有特殊的理由去做,否则你不需要像这样嵌套类。

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

 struct Info { // No need for these properties to be Implicitly Unwrapped Optionals since you initialize all of them var firstname: String var lastname: String var status: String init (firstname:String, lastname:String, status:String) { self.firstname=firstname self.lastname=lastname self.status=status } } class Global { // Now Global.sharedGlobal is your singleton, no need to use nested or other classes static let sharedGlobal = Global() var testString: String="Test" //for debugging var member:[Info] = [] } // Use the singleton like this let singleton = Global.sharedGlobal // Let's create an instance of the info struct let infoJane = Info(firstname: "Jane", lastname: "Doe", status: "some status") // Add the struct instance to your array in the singleton singleton.member.append(infoJane) 

现在这对我有意义。 一个持有关于某个用户的信息的结构,我可以创build它们的任何数字实例 – 以及一个独特的类,我可以存储这些Info实例,这个单例可以在任何地方使用。

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