如何在Swift中最好地存储应用程序范围内可访问的变量和数组

如何在Swift中最好地存储应用程序范围内可访问的变量和数组,swift,Swift,我有一些已定义的数组和/或变量,我希望通过应用程序访问它们。通常,它们将用于填充UIPicker选项。在应用程序中存储这些以供全局访问的最有效方式是什么 例如activityType=[“跑步”、“游泳”、“骑自行车”]您可以创建一个类,该类中有一个静态变量,如下所示: class Activity: NSObject { var activityType = ["Run", "Swimming", "Cycling"] static var shared = Activit

我有一些已定义的数组和/或变量,我希望通过应用程序访问它们。通常,它们将用于填充UIPicker选项。在应用程序中存储这些以供全局访问的最有效方式是什么


例如activityType=[“跑步”、“游泳”、“骑自行车”]

您可以创建一个类,该类中有一个静态变量,如下所示:

class Activity: NSObject {

    var activityType = ["Run", "Swimming", "Cycling"]

    static var shared = Activity()
}
要访问此属性,只需使用此行
Activity.shared.activityType

请记住,类是与值类型相对的引用类型,因此它的行为与您在本地创建的数组略有不同,但在大多数情况下,这不会影响您。如果绝对需要值类型,可以使用struct。您可以按照修改数组的方式修改数组
Activity.shared.activityType=[“new val”、“newvla2”]

这将在你的应用程序中持续存在

您还可以将它们存储为全局变量。这通常不被认为是最佳实践,但有时这只是最简单的方法

以下是您将如何做到这一点:

let activityType = ["Run", "Swimming", "Cycling"]

class ViewController: UIViewController {
    //Do whatever you want here for you VC 
}
如果不打算修改,也可以创建一个包含值的结构或类

class Activity: NSObject {
    let activityType = ["Run", "Swimming", "Cycling"]
}


如果它们是常量,通常的做法是将它们放入包含静态成员的结构中。e、 g

struct K {
    static let string1 = "some text"
    static let integer1 = 1
    static let array1 = ["a","b","c"]
}

我给了你很多选择,但如果你能更具体地说明用例,我可以帮助你告诉你哪种方法更适合使用。我还包括最终和私有初始化。Final防止它被子类化,private init确保它是唯一的。重要的是,它的应用程序广泛<代码>最终类活动:NSObject{static let shared=Activity()private init(){}
struct K {
    static let string1 = "some text"
    static let integer1 = 1
    static let array1 = ["a","b","c"]
}