swift – 类型’Any’没有下标成员

swift – 类型’Any’没有下标成员,第1张

概述let employerName = snapshot.value! ["employerName"] as! Stringlet employerImage = snapshot.value! ["employerImage"] as! Stringlet uid = snapshot.value! ["uid"] as! String 我查看过以前的帖子,但似乎无法找到解决此问题的方法.所
let employername = snapshot.value! ["employername"] as! Stringlet employerImage = snapshot.value! ["employerImage"] as! Stringlet uID = snapshot.value! ["uID"] as! String

我查看过以前的帖子,但似乎无法找到解决此问题的方法.所有三行代码都给出了“类型’Any’没有下标成员”错误.相当新的,所以任何帮助表示赞赏.

snapshot.value的类型为Any.下标是一种特殊的函数,它使用括在括号中的值的语法.此下标函数由Dictionary实现.

所以这里发生的是你作为开发人员知道snapshot.value是一个Dictionary,但编译器没有.它不会让你调用下标函数,因为你试图在类型Any的值上调用它而Any不会实现下标.为此,您必须告诉编译器您的snapshot.value实际上是一个Dictionary.更多字典允许您使用下标函数,其值为Dictionary的键所在的任何类型.所以你需要告诉它你有一个字符串,键是字符串(AKA [String:Any]).更进一步,在你的情况下,你似乎知道你的Dictionary中的所有值都是String,所以不要在使用as将它下标到String之后转换每个值!字符串,如果您只是告诉它您的Dictionary有两个字符串类型的键和值(AKA [String:String]),那么您将能够下标来访问这些值,编译器也会知道值也是字符串!

guard let snapshotDict = snapshot.value as? [String: String] else {    // Do something to handle the error     // if your snapshot.value isn't the type you thought it was going to be. }let employername = snapshotDict["employername"]let employerImage = snapshotDict["employerImage"]let uID = snapshotDict["fID"]

你有它!

总结

以上是内存溢出为你收集整理的swift – 类型’Any’没有下标成员全部内容,希望文章能够帮你解决swift – 类型’Any’没有下标成员所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1047967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存