gpt4 book ai didi

ios - 快速字典错误

转载 作者:行者123 更新时间:2023-11-28 07:17:42 25 4
gpt4 key购买 nike

我有这个功能:

typealias KeyValue = Dictionary<String,AnyObject>
func response( response: NSHTTPURLResponse!, data: AnyObject!, error: NSError! ) {

var resData = data as NSDictionary

if( resData["status"] as Int == 1 ){

var content = resData["content"] as Array<KeyValue>

for player in content {

let id : Int = player["id"]
let score : Int = player["score"]
let name : String = player["name"]

players[ id ]!.setName( name )
players[ id ]!.setScore( score )
}

} else {
println( resData["error"] )
}

self.playersList.reloadData()
}

我收到了这个错误:
“(String, AnyObject)”不可转换为“Int”
在这条线上

let id      : Int       = player["id"]
let score : Int = player["score"]
let name : String = player["name"]

我不明白为什么

内容是数组
-> 播放器是键值
-> 播放器是字典
-> player["id"] 是 AnyObject

那么他为什么认为 player["id"] 是'(String, AnyObject)'??

谢谢

更新

对此错误进行更改:

let id      = player["id"]!     as Int
let score = player["score"]! as Int
let name = player["name"]! as String

但现在我在运行时得到了这个:

Thread 5: EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT,subcode=0xdefe) 

最佳答案

player在你的循环中是 Dictionary<String, AnyObject> 的一个实例.所以存储在该字典中的值是 AnyObject 的实例.

在这一行中:

let id : Int = player["id"]

您正在尝试从 AnyObject 进行隐式转换至 Int ,这是不可能的。正确的处理方法是:

  1. 解包从字典中提取的值(如果键不存在,它可以是nil)
  2. 明确转换为 Int

所以该行应该固定如下:

let id : Int = player["id"]! as Int

也可以缩写为:

let id = player["id"]! as Int

类似的规则适用于 scorename

附录 - 根据您的上一个错误,可能是由于字典中没有键。尝试像这样使用可选值:

let id = (player["id"] as AnyObject?) as? Int
let score = (player["score"] as AnyObject?) as? Int
let name = (player["name"] as AnyObject?) as? String

你有 3 个可选变量,它们得到 nil如果右侧相应的表达式计算为 nil .如果可行,请使用调试器检查哪个键不在字典中

关于ios - 快速字典错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24768210/

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