【问题标题】:Store global strings in iOS in Swift for app-wide use在 Swift 中的 iOS 中存储全局字符串以供应用程序使用
【发布时间】:2014-08-18 08:46:19
【问题描述】:

我正在设计一个具有登录屏幕的应用程序。当用户输入用户名和密码时,将完成对 Web 服务的调用,该服务在成功登录时返回一个令牌。现在我需要将此令牌发送到应用程序不同屏幕内的每个 HTTP 调用。

我想实现类似这样的功能:Where to store global constants in an iOS application?

由于 Swift 中不会有任何 .h.m 文件,我如何存储这些全局字符串(注意这些不是常量,这些是全局变量),我需要能够在任何视图控制器

【问题讨论】:

    标签: ios swift string


    【解决方案1】:

    这正是我想要的:Sharing strings and variables throughout ios app

    我可以使用 NSUserDefaults 共享字符串,例如 apikeys、令牌

    保存:

    NSUserDefaults.standardUserDefaults().setObject("apistringhere", forKey: "apikey")
    NSUserDefaults.standardUserDefaults().synchronize()
    

    得到:

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

    【讨论】:

    • 请注意NSUderDefaults 没有使用任何加密,因此密码和类似的东西根本不安全。
    【解决方案2】:

    首先,使用全局变量并不是大多数问题的正确答案。您应该拥有一个负责与 Web 服务通信的对象,并且该对象还应该负责跟踪登录状态和令牌。如果 URL 发生变化,您只需在一处更改它们,处理数据的代码不需要关心数据的来源。

    话虽如此,您可以在 Swift 中声明一个全局变量或常量,只需在文件的顶级范围声明,在任何函数、方法、闭包或类型之外。您还可以使用access control keywords 修改变量/常量的可见性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 2013-06-08
      • 2014-03-05
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      相关资源
      最近更新 更多