我正在设计一个具有登录屏幕的应用程序。当用户输入用户名和密码时,将完成对Web服务的调用,该调用将在成功登录时返回令牌。现在,我需要将此令牌发送到应用程序内不同屏幕内的每个HTTP调用。
我希望实现类似的功能:Where to store global constants in an iOS application?
由于Swift中没有任何.h
和.m
文件,如何存储这些全局字符串(注意这些不是常量,这些是全局变量)我需要能够在任何视图控制器中访问
答案 0 :(得分:3)
这正是我想要的:Sharing strings and variables throughout ios app
我可以使用NSUserDefaults
省电:
NSUserDefaults.standardUserDefaults().setObject("apistringhere", forKey: "apikey")
NSUserDefaults.standardUserDefaults().synchronize()
得到:
NSUserDefaults.standardUserDefaults().objectForKey("apikey")
答案 1 :(得分:1)
首先,使用全局变量不是大多数问题的正确答案。您应该使用一个负责与Web服务通信的对象,并且该对象还应负责跟踪登录状态和令牌。如果网址发生变化,您只需在一个地方进行更改,而处理数据的代码并不需要关注数据的来源。
话虽这么说,你可以在Swift中声明一个全局变量或常量,只需在任何函数,方法,闭包或类型之外声明文件的顶级范围。您还可以使用access control keywords修改变量/常量的可见性。