swift - 如何将值附加到字典内的字典(Swift 4)
问题描述
我正在尝试创建一个像这样的字典结构的消息缓存......
var messageCache = [String:[String:Message]]()
基本上就是[Conversation Id: [Message Id: Message]],Message也是一个值的字典。
每当我想将新消息对象添加到我正在调用的消息缓存中时
let messageKey = snapshot.key
let message = Message(dictionary: dictionary)
messageCache[convoId] = [messageKey:message]
但是,我相信这会删除 messageCache[convoId] 中的所有内容,并将其替换为仅一个消息键和对象。我也尝试了下面的代码,但它返回 nil。
messageCache[convoId]?[messageKey] = message
如何将另一个包含 [messageKey:Message] 的字典附加到 messageCache[convoId]?
解决方案
也许这有帮助:
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 是字符串键和元组数组值的字典。
推荐阅读
- sql-server - 为什么将列从 nvarchar 更改为 varchar 会导致 mdf 文件大幅增长?
- ruby-on-rails - 启动 puma w/o `bundle exec` 工作;不适用于捆绑执行;BUNDLE_APP_CONFIG env var 在 RUBYOPT="-rbundler/setup" 运行期间不可用
- mpi - 如何为 mpirun 配置主机文件和机器文件?
- java - Android Oreo 动画渲染问题
- php - 嵌套的 foreach 循环无法正常运行。- wp
- r - 如何在 RCpp 中向数据框添加新列?
- javascript - 正则表达式的字符类范围乱序
- sql - SQL 自加入日期
- python - 断言 pytest 命令已运行
- rust - 如何打印在 rust-gdb 中调用 Rust 函数的结果?