【发布时间】:2018-10-02 08:42:45
【问题描述】:
在我的代码中,当用户进入应用程序时,我给他/她一个令牌并使用 UserDefaults 保存它,然后在应用程序的其他地方用户可以将地址设置为主地址,并通过 UserDefaults 保存它。 当我首先这样做时,它会删除我在 constantKey.token 中使用用户默认值保存的令牌,然后将“65”放入地址 constant.address 中!虽然地址不是“65”
UserDefaults.standard.set(self.Main[indexPath.row].AddressLine, forKey: constantAddress.addressLine)
////
UserDefaults.standard.set(self.Main[indexPath.row].ProvinceName, forKey: ConstantsKey.stateName)
UserDefaults.standard.set(self.Main[indexPath.row].ProvinceId, forKey: constantAddress.stateId)
UserDefaults.standard.set(self.Main[indexPath.row].CityName, forKey: constantAddress.cityName)
UserDefaults.standard.set(self.Main[indexPath.row].CityId, forKey: constantAddress.cityId)
UserDefaults.standard.set(self.Main[indexPath.row].AddressLine, forKey: constantAddress.addressLine)
UserDefaults.standard.set(self.Main[indexPath.row].PostalCode, forKey: constantAddress.postalCode)
UserDefaults.standard.set(self.Main[indexPath.row].Tel, forKey: constantAddress.telephone)
UserDefaults.standard.set(self.Main[indexPath.row].Mobile, forKey: constantAddress.mobile)
UserDefaults.standard.set(self.Main[indexPath.row].Id, forKey: constantAddress.Id)
class constantAddress {
static var Id = ""
static var stateName = ""
static var stateId = "0"
static var cityName = ""
static var cityId = "0"
static var addressLine = ""
static var postalCode = ""
static var telephone = ""
static var mobile = ""
}
它不会将项目的值保存到 constantAddress
从 userdefualts 获取数据:
StateLbl.text = UserDefaults.standard.string(forKey: constantAddress.stateName)
CityLbl.text = UserDefaults.standard.string(forKey: constantAddress.cityName)
AddressLbl.text = UserDefaults.standard.string(forKey: constantAddress.addressLine)
PostalCodeLbl.text = UserDefaults.standard.string(forKey: constantAddress.postalCode)
TelLbl.text = UserDefaults.standard.string(forKey: constantAddress.telephone)
MobileLbl.text = UserDefaults.standard.string(forKey: constantAddress.mobile)
【问题讨论】:
-
您应该edit 您的问题以minimal reproducible example 的形式包含导致问题的实际代码。
-
是
constantAddress.addressLine==ConstantsKey.token?您还可以提供一些您正在使用的键/值,以及您认为哪里错了吗? -
当然
UserDefaults工作正常,您的您的代码中有错误。 -
Swift 提示: 始终使用
lowerCamelCase表示 Swift 变量/函数名称,例如addressLine不是AddressLine,main不是Main -
你仍然不明白键值映射是如何工作的,
""是键,如果你有两个代表""的常量,它们将访问映射中的同一个对象。
标签: ios iphone swift nsuserdefaults