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

标签 ios swift struct singleton

我是 iOS 编程的新手,而且速度很快。我正在尝试创建一个单例类来存储我的全局数据。我的全局数据是一个结构和这个结构的数组。我只想拥有此类的一个实例,因此是一个单例类。所有 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
     }
    }

现在我想从一些 View Controller 访问这个单例类的全局变量。当我在 xcode 中键入此内容时:

    Global.SharedGlobal.

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

    Global.

然后我看到 Global.InfoGlobal.SharedGlobal 作为我的选项。

为什么我无法访问单例类中的结构(即 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)

现在它对我来说很有意义。一个包含一些用户信息的结构,我可以创建它们的任意数量的实例 - 以及一个单例类,唯一的,我可以存储这些信息实例,这个单例可以在任何地方使用。

这是您想要实现的目标吗?

关于ios - 如何在 swift 2.0 (iOS) 的单例类中创建全局可访问的结构数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35439188/

相关文章:

swift - 无法调用非函数类型的值 'SessionManager'

iphone - 使用 Core Data 将 iOS 应用程序部署到 App Store 的最佳实践?

iOS 使 UITableViewCell 中的 UIPickerView 适合一行

ios - 取消firebase功能

ios - RatingControl - 从 viewController 中捕获点击的星星数

html - 如何快速删除字符串中的所有html

Python结构体错误: bad char in struct format

c++以数组作为成员初始化结构

ios - 在具有多个部分的 tableView 中滚动时,使用流畅的动画更改 View 背景渐变颜色

C++ - 带有结构指针的字符串输入?