ios - swift NSUserDefaults setString :forKey:?

标签 ios swift nsuserdefaults

NSUserDefaults 有 integerForKey:setInteger:forKey:stringForKey:,但没有 setString:forKey:.

如何将字符串设置为 NSUserDefaults?它有 setObject:forKey: 但是,在 Swift 中,String 是一个结构。可以用setObject:forKey:来存储字符串吗?

最佳答案

更新:Xcode 13.2.1 • Swift 5.5.2

let string = "Hello World"

UserDefaults.standard.set(string, forKey: "string")

if let loadedString = UserDefaults.standard.string(forKey: "string") {
    print(loadedString) // "Hello World"
}

Swift 的好处在于它允许您轻松地扩展语言。您可以创建自己的 date(forKey:) 扩展 UserDefaults 以创建实例方法,如下所示:

extension UserDefaults {
    func date(forKey defaultName:String) -> Date? {
        object(forKey: defaultName) as? Date
    }
}

let userName = "Chris Lattner"
let userAddress = "1 Infinite Loop, Cupertino, CA 95014, United States"
let userDOB = DateComponents(calendar: .init(identifier: .gregorian), year: 1978).date!

UserDefaults.standard.set(userName, forKey: "userName")
UserDefaults.standard.set(userAddress, forKey: "userAddress")
UserDefaults.standard.set(userDOB, forKey: "userDOB")

let loadedUserName = UserDefaults.standard.string(forKey: "userName")
let loadedUserAddress = UserDefaults.standard.string(forKey: "userAddress")
let loadedUserDOB = UserDefaults.standard.date(forKey: "userDOB")

print(loadedUserName ?? "nil")    // "Chris Lattner"
print(loadedUserAddress ?? "nil") // "1 Infinite Loop, Cupertino, CA 95014, United States"
print(loadedUserDOB?.description(with: .init(identifier: "en_US")) ?? "nil")  // "Sunday, January 1, 1978 at 12:00:00

关于ios - swift NSUserDefaults setString :forKey:?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29126731/

相关文章:

ios - 安全区域问题 - 在 iPhone X 上正常,但在其他人上不行

ios - UIWebView 委托(delegate) 2 个 viewController

ios - 传递数据 VC 委托(delegate) iOS

ios - 将 UITabBar 放置在 UITabBarController 中的屏幕顶部

ios - 未在 viewController 中执行 Segue

ios - 使用 AVPlayer 从远程 url 播放 HEVC(H.265) 文件

ios - 在 NSUserDefaults 中用 Swift 保存一个数据数组

swift - 如何初始加载 UITableView 然后观察 Firebase 节点的更改以在 Swift 中刷新 tableview?

xcode - 为什么基于应用程序组(即 suiteName)的 NSUserDefaults 返回不同的实例?

ios - NSMutableArray 保存和加载到默认值无法正常工作