【发布时间】:2021-12-16 23:26:18
【问题描述】:
目前,我有一个字典,上面有值,其中一些是对象,字典中的值如下
["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
【问题讨论】:
-
lastMessage as? [String: Any]。您已经将childSnapshot.value转换为字典,只需再次执行相同操作即可。 -
您继续像在保护声明中所做的那样作为该保护声明的一部分或单独的
if let …进行投射。另一种方法是使用自定义类型。 -
@EmilioPelaez 我得到了同样的错误“'[String : Any] 类型的值?'没有成员“hasReadMessage””
-
let lastMessage = dictionary["lastMessage"] as? [String: Any]-->let value = lastMessage?["hasReadMessage"] as? Int
标签: swift firebase firebase-realtime-database