我的应用程序应该去一个特定的位置来拉下它需要加载的网站。在 2.3 中它就像一个魅力,但由于我更新了 xcode(我没有大量经验)它给了我错误“类型'Any'没有下标成员”并突出显示“json”就在第三行之前
...Retriever = json["WEB"]...
这是相关的代码。
let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments)
if let Retriever = json["WEB"] as? [[String: AnyObject]] {
for website in Retriever {
if let name = website["URL"] as? String {
self.loadAddressURL(name)
我觉得我错过了一些小东西。如果有更好的方法可以做到这一点,我会喜欢建议。该 URL 返回此 JSON
{
"WEB" : [
{
"URL" : "http://www.google.com"
}
]
}
但如果我能把它简化成这样,我会很高兴的
{"URL":"http://www.google.com"}
最佳答案
试试这个:
let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String:AnyObject]
安全方式:
do {
if let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as? [String:Any] {
print(json)
}
} catch let err{
print(err.localizedDescription)
}
您必须将类型 Any
转换为 Swift 字典类型 [String:AnyObject]
。
编辑:Swift 3
在 swift 3 中,AnyObject
的目的更加明确。所以更有利的 Swift 字典类型将是 [String:Any]
。
Any
是任何数据类型的别名。
AnyObject
是从类派生的任何数据类型的别名。
欲了解更多信息,请访问: https://craiggrummitt.com/2016/09/16/any-vs-anyobject-vs-nsobject-in-swift-3/
关于ios - 类型 'Any' 在 xcode 8 Swift 3 中没有下标成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39516199/