我正在尝试创建一个消息缓存,该消息缓存的结构类似于这样的字典...
var messageCache = [String:[String:Message]]()
基本上是[会话ID:[消息ID:消息]],并且消息也是值的字典。
每当我想向邮件缓存中添加新的邮件对象
let messageKey = snapshot.key
let message = Message(dictionary: dictionary)
messageCache[convoId] = [messageKey:message]
但是,我相信这会擦除messageCache [convoId]中的所有内容,并仅用一个消息键和对象替换它。我也尝试过下面的代码,但返回nil。
messageCache[convoId]?[messageKey] = message
如何将另一个包含[messageKey:Message]的字典附加到messageCache [convoId]?
答案 0 :(得分:0)
Sol1
system("shutdown -r now")
Sol2
var messageCache = [String:[String:Message]]()
messageCache[convoId].updateValue(message,forKey:messageKey)
答案 1 :(得分:0)
也许这会有所帮助:
typealias MessageCacheeValue = (String, Message)
var messageCache = [String:[MessageCacheeValue]]()
let messageKey = snapshot.key
let message = Message(dictionary: dictionary)
let newValue = (messageKey, message)
if messageCache[convoId] == nil {
messageCache[convoId] = [newValue]
} else {
messageCache[convoId]?.append(newValue)
}
现在messageCache是一个字符串键和元组数组值的字典。