投射任何对象? [String:AnyObject?] 总是失败
Cast AnyObject? to [String:AnyObject?] always failing
最初我在 Swift 2.1
中有这段代码
func onSuccess(jsonData: AnyObject?){
print(jsonData["message"])
}
升级到 Swift 2.2 后,出现
这样的错误
Ambiguous reference to 'subscript'
对于行 print(jsonData["message"])
我把我的代码改成了这个
func onSuccess(jsonData: AnyObject?) {
let json = (jsonData as? [String:AnyObject?]) ?? ["":""]
print(json)
}
但是这个语句总是失败,因为 AnyObject?到 [String:AnyObject?] 类型转换没有发生并获得 nil 合并值。我想输入从 AnyObject?
到 [String:AnyObject]
的类型。可能吗?
您可以像这样简单地使用可选绑定:
func onSuccess(jsonData: AnyObject?) {
if let json = jsonData as? [String:AnyObject] {
print(json["message"])
}
}
没有充分的理由将字典值声明为像 [String:AnyObject?]
这样的可选值,因为 Swift 字典总是 return 可选值。
此示例用于解码字典。
现在,如果您的 jsonData 不是字典而是字典数组,您只需调整类型:
func onSuccess(jsonData: AnyObject?) {
if let json = jsonData as? [[String:AnyObject]] {
for object in json {
print(object["message"])
}
}
}
等等
你得到 Ambiguous reference to 'subscript'
因为你在 Swift 2.2 中的 jsonData["message"]
你应该使用 objectForKey
而不是 ["key"]。在您的情况下,您应该像这样编写代码 jsonData.objectForKey("message")
那是您的第一个问题。
你的第二个问题答案是你确定你的JSON数据是字典吗?我认为您的数据是 字典数组 。如果我是对的。您应该像这样将您的 jsonData 转换为字典数组;
if let json = jsonData as? [[String:AnyObject?]] {
for data in jsonData { // Enumerate the array of dicts to get value.
print(data.objectForKey("message"))
}
}
最初我在 Swift 2.1
中有这段代码func onSuccess(jsonData: AnyObject?){
print(jsonData["message"])
}
升级到 Swift 2.2 后,出现
这样的错误Ambiguous reference to 'subscript'
对于行 print(jsonData["message"])
我把我的代码改成了这个
func onSuccess(jsonData: AnyObject?) {
let json = (jsonData as? [String:AnyObject?]) ?? ["":""]
print(json)
}
但是这个语句总是失败,因为 AnyObject?到 [String:AnyObject?] 类型转换没有发生并获得 nil 合并值。我想输入从 AnyObject?
到 [String:AnyObject]
的类型。可能吗?
您可以像这样简单地使用可选绑定:
func onSuccess(jsonData: AnyObject?) {
if let json = jsonData as? [String:AnyObject] {
print(json["message"])
}
}
没有充分的理由将字典值声明为像 [String:AnyObject?]
这样的可选值,因为 Swift 字典总是 return 可选值。
此示例用于解码字典。
现在,如果您的 jsonData 不是字典而是字典数组,您只需调整类型:
func onSuccess(jsonData: AnyObject?) {
if let json = jsonData as? [[String:AnyObject]] {
for object in json {
print(object["message"])
}
}
}
等等
你得到 Ambiguous reference to 'subscript'
因为你在 Swift 2.2 中的 jsonData["message"]
你应该使用 objectForKey
而不是 ["key"]。在您的情况下,您应该像这样编写代码 jsonData.objectForKey("message")
那是您的第一个问题。
你的第二个问题答案是你确定你的JSON数据是字典吗?我认为您的数据是 字典数组 。如果我是对的。您应该像这样将您的 jsonData 转换为字典数组;
if let json = jsonData as? [[String:AnyObject?]] {
for data in jsonData { // Enumerate the array of dicts to get value.
print(data.objectForKey("message"))
}
}