gpt4 book ai didi

ios - 更新到 Swift 3 后类型 'Any' 没有下标成员

转载 作者:IT王子 更新时间:2023-10-29 05:28:25 25 4
gpt4 key购买 nike

这是我在 Swift 中的代码:

currentUserFirebaseReference.observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in
let UID = snapshot.key
let pictureURL = snapshot.value!["pictureURL"] as! String
let name = snapshot.value!["displayname"] as! String
let currentUser = Person(name: name, bio: "", UID: UID, pictureURL: pictureURL)
self.currentUserInfo = currentUser
})

我刚刚更新到 Xcode 8/Swift 3,这似乎导致了以下错误消息:

"Type 'Any' has no subscript members"

我在我的代码中的许多地方调用了 snapshot.value!["insert something here"],我遇到了这个错误,我无法运行我的代码代码。

以下代码有效:

let pic = (snapshot.value as? NSDictionary)?["pictureURL"] as? String ?? ""

但是,与以前相比,我看不出现在有什么变化或有必要这样做。

据我所知,唯一发生变化的是 observe 的语法,但我不明白为什么这会导致我的代码停止工作。

最佳答案

J. Cocoe 的回答绝对正确,但对于那些需要代码示例的人来说,您可以这样做:

代替

let name = snapshot.value!["displayname"] as! String

尝试

let snapshotValue = snapshot.value as? NSDictionary
let name = snapshotValue["displayName"] as? String

想法是您需要将 snapshot.value 的类型从 Any 转换为 NSDictionary。

编辑:

正如 Connor 指出的那样,强制解包 snapshot.value 或来自后端系统的任何东西都不是一个好主意,因为可能会收到意外信息。所以你改成! NSDictionary 到 as? NSDictionary.

关于ios - 更新到 Swift 3 后类型 'Any' 没有下标成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39480150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com