如何在 Swift 中访问 [String: Any] 字典中的值
How do I access a value on an [String: Any] Dictionary in Swift
目前,我有一个字典,上面有值,其中一些是对象,字典中的值如下
["otherUserId": id,
"otherUser": {
email = "zak@test.co.uk";
name = zakmint;
profileImageURL = "url";
},
"lastMessage": {
fromId = id;
hasReadMessage = 0;
text = What;
timestamp = 1635800286;
toId = id;
type = TEXT;
},
"timeStamp": 1635800286]
如何访问 hasReadMessage 的值,我目前正在像这样获取字典,然后尝试访问它之上的值。但它的类型为 Any,我不确定如何在不导致编译错误的情况下访问该值。
if let childSnapshot = child as? DataSnapshot {
guard let dictionary = childSnapshot.value as? [String: Any] else { return }
print(dictionary)
let lastMessage = dictionary["lastMessage"]
let value = lastMessage.hasReadMessage
您不能将字典视为结构。这些键 不是 可以通过点表示法访问其值的属性。
您必须使用密钥订阅并有条件地将每个中间值向下转换为正确的类型
guard let childSnapshot = child as? DataSnapshot,
let dictionary = childSnapshot.value as? [String:Any],
let lastMessage = dictionary["lastMessage"] as? [String:Any],
let hasReadMessage = lastMessage["hasReadMessage"] as? Bool else { return }
print(hasReadMessage)
目前,我有一个字典,上面有值,其中一些是对象,字典中的值如下
["otherUserId": id,
"otherUser": {
email = "zak@test.co.uk";
name = zakmint;
profileImageURL = "url";
},
"lastMessage": {
fromId = id;
hasReadMessage = 0;
text = What;
timestamp = 1635800286;
toId = id;
type = TEXT;
},
"timeStamp": 1635800286]
如何访问 hasReadMessage 的值,我目前正在像这样获取字典,然后尝试访问它之上的值。但它的类型为 Any,我不确定如何在不导致编译错误的情况下访问该值。
if let childSnapshot = child as? DataSnapshot {
guard let dictionary = childSnapshot.value as? [String: Any] else { return }
print(dictionary)
let lastMessage = dictionary["lastMessage"]
let value = lastMessage.hasReadMessage
您不能将字典视为结构。这些键 不是 可以通过点表示法访问其值的属性。
您必须使用密钥订阅并有条件地将每个中间值向下转换为正确的类型
guard let childSnapshot = child as? DataSnapshot,
let dictionary = childSnapshot.value as? [String:Any],
let lastMessage = dictionary["lastMessage"] as? [String:Any],
let hasReadMessage = lastMessage["hasReadMessage"] as? Bool else { return }
print(hasReadMessage)