首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Swift中声明全局变量

在Swift中声明全局变量
EN

Stack Overflow用户
提问于 2014-10-28 04:59:09
回答 4查看 66.9K关注 0票数 28

我想创建一个全局的定制对象数组,这些对象可以在整个应用程序(AppDelegate、ViewController类、TableViewController类等)中访问。我研究过一种方法,但没有找到答案。我尝试将数组设置为一个公共作用域,但是我收到了一个编译器警告,上面写着Declaring public variable from internal class,当我试图在另一个文件中访问它时,我会得到一个错误,上面写着Use of unresolved identifier 'arrayObjectives'

如何使应用程序中的所有文件都可以访问该数组,以及如何实例化该数组?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-10-28 05:11:07

Swift编程语言 -

全局变量是在任何函数、方法、闭包或类型上下文之外定义的变量。

因此,您可以直接在import语句之后在任何文件的顶部声明变量。

不过,我建议你认真考虑一下。一般来说,全球化并不是个好主意。您最好使用单例上的属性或使用依赖项注入。

你的第二个问题“我将在哪里实例化数组?”是全球化不好的原因之一--它们的生命周期没有从其他对象的角度很好地定义。第一次使用时初始化的单例消除了这个问题。

票数 22
EN

Stack Overflow用户

发布于 2014-10-28 05:01:38

您可以像这样设置全局数组:

代码语言:javascript
复制
import UIKit

var abc : String = String()

您可以在任何其他文件中访问它,如:

代码语言:javascript
复制
abc = "ABC"
票数 13
EN

Stack Overflow用户

发布于 2016-09-08 23:09:23

尝试使用以下内容创建一个新的Swift文件:

代码语言:javascript
复制
struct Constants {

  static let appName: String = "My App"

  struct Colors {

    static let colorTextStandard = UIColor(red: 0/255, green: 0/255, blue: 0/255, alpha: 0.3) //#000000

  }

  struct Data {

    static var myStrings = [String]()  // Yea, this is not a constant, but that's alright...

  }

}

然后,您可以使用以下方法引用这些全局常量(或者可以使它们成为变量):

代码语言:javascript
复制
Constants.appName

代码语言:javascript
复制
Constants.Colors.colorTextStandard

代码语言:javascript
复制
Constants.Data.myStrings = [stringOne, stringTwo]
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26601163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档