使变量值在swift中保持不变

时间:2017-10-04 09:21:07

标签: ios swift constants

我对swift编码很新,所以我几乎不知道任何语法。 我在视图控制器中定义一个变量并为其分配一个随机的4位数值。 我想在安装/更新应用程序时仅分配此值一次,而不是每次用户打开应用程序时分配此值。 如果你们中的任何人知道这方面的解决方案,请帮帮我。以下是我目前的代码

import UIKit
let stranger = String(arc4random_uniform(10000))

class ViewController: UIViewController {...}

2 个答案:

答案 0 :(得分:3)

您应该使用UserDefaults来保存随机值。当你第一次打开app时,你会在 stranger 中获得一些随机值。使用特定的UserDefaults中添加这些值,您可以使用在UserDefault中设置的来访问值。

<强>实施例

您在陌生人中获得随机值 1234 ,那么您应该首先检查您是否已设置该值?

if UserDefaults.standard.object(forKey: "keyRandom") == nil { // If value already set then you do not need to reset
  UserDefaults.standard.set(stranger, forKey: "keyRandom")
}

如果你想访问价值,可以通过

获得
print("\(UserDefaults.standard.object(forKey: "keyRandom") ?? "not Found")")

答案 1 :(得分:0)

如果要在启动之间保留,则需要将数据存储在持久性数据存储中。 UserDefaults是一个简单的解决方案,您可以使用registerDefaults方法对其进行播种。

注册您的默认属性。在AppDelegate.didFinishingLaunching可能是一个好地方

UserDefaults.standard.register(defaults: [
            "MyKey" : String(arc4random_uniform(10000))
        ])

拉出值:

let stranger = UserDefaults.standard.string(forKey: "MyKey")

如果您不想在应用启动时注册默认值,或者需要更改默认设置,那么您也可以在首次需要时设置该属性,使用if let检查是否可以已经存在,如果没有,请设置它。

func getStranger() -> String {
    if let v = UserDefaults.standard.string(forKey: "MyKey") {
        return v
    } else {
        let rand = String(arc4random_uniform(10000))
        UserDefaults.standard.set(rand, forKey:"MyKey")
        return rand
    }
}

注意:代码写在SO答案框中,未经过测试,可能包含语法错误。仅限演示