如何在 Swift 中附加字典值
How to append Dictionary value in Swift
我正在尝试将每日数据保存到字典中。当用户达到他们每日进度的 100% 时,我想将那一天和一个“真实”值添加到字典中。
问题是,当我尝试添加一个新的键和值时,它会覆盖前一个键和值,因为当天来自同一变量,该变量会根据日期更改其数据。
let calendarCurrent = Calendar.current
let currentDate = Date()
monthlyDictionary["\(calendarCurrent.component(.day, from: currentDate))"] = "true"
defaults.set(monthlyDictionary, forKey: "monthlyDictionary")
因此 Dictionary Key 将是一个等于当天的变量,并且值为“true”
您发布的代码总是用字典替换键 monthlyDictionary
的内容。您创建的字典使用当月的当天作为键和值“true”。
今天是 1 月 19 日,因此如果您今天 运行 该代码,它将在 UserDefaults 中创建一个条目,其中包含键 monthlyDictionary
和值 ["19": "true"]
。明天它将用包含值 ["19": "true"]
的新字典替换键 monthlyDictionary
处的值
如果您想每天向字典中追加一个新条目,您需要阅读现有字典,追加一个值,然后重新编写它:
let calendarCurrent = Calendar.current
let currentDate = Date()
var oldMonthlyDictionary = [AnyHashable:Any]()
oldMonthlyDictionary = defaults.object(forKey: "monthlyDictionary") as? Dictionary else {
print("dictionary not found. Creating empty dictionary")
}//Add this line
//Add a new key/value pair to your dictionary and re-save it.
oldMonthlyDictionary["\(calendarCurrent.component(.day, from: currentDate))"] = "true"
defaults.set(oldMonthlyDictionary, forKey: "monthlyDictionary")
编辑:
请注意,如果您在给定的日历日多次 运行 此代码,它将在随后的每个 运行.
中覆盖当前日期的先前值
我正在尝试将每日数据保存到字典中。当用户达到他们每日进度的 100% 时,我想将那一天和一个“真实”值添加到字典中。 问题是,当我尝试添加一个新的键和值时,它会覆盖前一个键和值,因为当天来自同一变量,该变量会根据日期更改其数据。
let calendarCurrent = Calendar.current
let currentDate = Date()
monthlyDictionary["\(calendarCurrent.component(.day, from: currentDate))"] = "true"
defaults.set(monthlyDictionary, forKey: "monthlyDictionary")
因此 Dictionary Key 将是一个等于当天的变量,并且值为“true”
您发布的代码总是用字典替换键 monthlyDictionary
的内容。您创建的字典使用当月的当天作为键和值“true”。
今天是 1 月 19 日,因此如果您今天 运行 该代码,它将在 UserDefaults 中创建一个条目,其中包含键 monthlyDictionary
和值 ["19": "true"]
。明天它将用包含值 ["19": "true"]
monthlyDictionary
处的值
如果您想每天向字典中追加一个新条目,您需要阅读现有字典,追加一个值,然后重新编写它:
let calendarCurrent = Calendar.current
let currentDate = Date()
var oldMonthlyDictionary = [AnyHashable:Any]()
oldMonthlyDictionary = defaults.object(forKey: "monthlyDictionary") as? Dictionary else {
print("dictionary not found. Creating empty dictionary")
}//Add this line
//Add a new key/value pair to your dictionary and re-save it.
oldMonthlyDictionary["\(calendarCurrent.component(.day, from: currentDate))"] = "true"
defaults.set(oldMonthlyDictionary, forKey: "monthlyDictionary")
编辑:
请注意,如果您在给定的日历日多次 运行 此代码,它将在随后的每个 运行.
中覆盖当前日期的先前值