在Swift中为iOS应用程序存储全局字符串以供整个应用程序使用

8
我正在设计一个应用程序,其中包含登录屏幕。当用户输入用户名和密码时,会调用Web服务,在成功登录后返回令牌。现在,我需要将此令牌发送到应用程序中不同屏幕内的每个HTTP调用中。
我想实现类似于这样的功能:在iOS应用程序中存储全局常量的位置在哪里? 由于Swift中没有.h.m文件,那么我该如何存储这些全局字符串(请注意,这些不是常量,而是全局变量),以便能够在任何视图控制器中访问它们?
2个回答

3
这正是我想要的:在 iOS 应用中共享字符串和变量 我能够通过使用NSUserDefaults来分享像 apikeys、tokens 这样的字符串。
保存:
NSUserDefaults.standardUserDefaults().setObject("apistringhere", forKey: "apikey")
NSUserDefaults.standardUserDefaults().synchronize()

获取:

NSUserDefaults.standardUserDefaults().objectForKey("apikey")

1
请注意,NSUserDefaults 不使用任何加密,因此密码等内容将完全不安全。 - mccoyLBI

1
首先,使用全局变量并不是大多数问题的正确答案。相反,你应该拥有一个对象来处理与Web服务的通信,并且该对象还应负责跟踪登录状态和令牌。如果URL更改了,你只需要在一个地方进行更改,处理数据的代码就不需要关心数据来自哪里。
话虽如此,在Swift中声明全局变量或常量只需在文件的顶级作用域中声明,不在任何函数、方法、闭包或类型之内。你也可以使用访问控制关键字修改变量/常量的可见性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接