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/