gpt4 book ai didi

ios - UserDefaults 在框架中使用时不保存

转载 作者:行者123 更新时间:2023-11-28 05:37:29 26 4
gpt4 key购买 nike

我有一个框架需要在本地保存值,为此我选择了 UserDefaults。

但是,这些值永远不会被保存,并且以下读取函数在重新启动应用程序后总是返回 ""

class Preferences {
let preferences : UserDefaults

init (preferences : UserDefaults) {
self.preferences = preferences
}

// Private Key
func savePrivateKey(key : String) {
writeString(value: key, key: privateKeyKey)
}

func readPrivateKey() -> String! {
return readString(key: privateKeyKey)
}

private func readString(key : String) -> String? {
if preferences.object(forKey: key) == nil {
return "bananas"
} else {
return preferences.string(forKey: key)
}
}

private func writeString(value : String, key : String) {
preferences.set(value, forKey: key)
}

fileprivate let privateKeyKey = "privateKey"
}

初始化为:

let preferences = Preferences(preferences: UserDefaults.standard)

我试过:

  • 模拟器和物理设备
  • 调试和发布
  • UserDefaults 和 SwiftyUserDefaults

奇怪的是,这是在保存 Bool 值,而不是字符串值。

我认为这可能是因为未正确使用 UserDefaults,但 SwiftyUserDefaults 得到了相同的结果。

最佳答案

import Foundation

public class AppDefaults {
private let defaultStringKey = "DefaultString"
}

public extension AppDefaults {

var defaultString: String? {
get { return UserDefaults.standard.string(forKey: defaultStringKey) }
set { UserDefaults.standard.set(newValue?.description, forKey: defaultStringKey) }
}

}

我建议您创建一个名为 AppDefaults 等的单独文件。然后您可以访问每个默认值

var text = AppDefaults().defaultString

然后您可以覆盖它,它会自动保存使用

AppDefaults().defaultString = "Bananas"

关于ios - UserDefaults 在框架中使用时不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58180065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com