每按一次按钮重置userdefualts(swift4)

时间:2017-11-14 04:36:49

标签: ios button save nsuserdefaults swift4

我正在尝试使用userdefualts来保存标签上显示的元组。现在我的代码使用userdefulats,如下所示。如果a,则输入a,然​​后输入a,3。标签显示a,2a,2,a,3。标签只是附加每个新条目。我需要userdefualt来覆盖刚刚保存的内容。所以它应该只显示a,2a,3。

        @IBAction func submitText(_ sender: Any) {
        if let domain = Bundle.main.bundleIdentifier {
            UserDefaults.standard.removePersistentDomain(forName: domain)
        }

        llble.text = String(describing: result) + "\n"
                    UserDefaults.standard.set(llble.text, forKey: "name")

        }

    override func viewDidAppear(_ animated: Bool) {
        let save : String? = UserDefaults.standard.object(forKey: "name") as? String
        if let nameToDisplay = save {
            llble.text = nameToDisplay
        }
    }

3 个答案:

答案 0 :(得分:1)

斯威夫特4:

library(stringr)
str_replace(df$my_factor, "(^[:digit:])","S\\1")


"TC02345" "TC02734" "TS3234"  "S34566"  "S79800"

斯威夫特3:

if let domain = Bundle.main.bundleIdentifier {
    UserDefaults.standard.removePersistentDomain(forName: domain)
}

目标-C:

if let domain = NSBundle.mainBundle().bundleIdentifier {
    NSUserDefaults.standardUserDefaults().removePersistentDomainForName(
domain)
}

调用此方法相当于初始化用户默认值对象,NSString *domain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName: domain]; 传递domainName,并在其每个键上调用init(suiteName:)方法。

同样removeObject(forKey:)是一种传统方法,不需要也不应该使用。

答案 1 :(得分:0)

您应该检查为用户默认提供字符串的结果变量的逻辑。

答案 2 :(得分:-1)

您可以在Swift中使用以下方法。这将删除并删除所有可能的用户默认值。

UserDefaults.standard.removePersistentDomain(forName: Bundle.main.bundleIdentifier!)
UserDefaults.standard.synchronize()