【问题标题】:ios swfit - assign list of AnyObject to dictionary keyios swift - 将 AnyObject 列表分配给字典键
【发布时间】:2017-09-20 13:57:19
【问题描述】:

所以我想将 AnyObject 列表分配给结构为 [String:AnyObject] 的字典的键

这是我的代码:

let list = try JSONSerialization.jsonObject(with: newData, options: .allowFragments) as! [AnyObject]
                let parsedResult = [String:AnyObject]()
                parsedResult["dataList"] = list
                callback(false, parsedResult)

我正在解析来自 http 请求的数据。我得到这个错误:

无法将类型 [AnyObject] 的值赋给类型 AnyObject?

不是 AnyObject 的列表,还是一个对象?

【问题讨论】:

  • 让 parsedResult = [String:[AnyObject]]()
  • 现在我面临 tis 错误:Any 类型没有下标成员。帮助?这就是它发生的地方 - if let accountKey = data?["account"]?["key"], let sessionID = data?["session"]?["id"]
  • "不是 AnyObject 的列表,还是一个对象?"不,Array 是一个结构,而不是一个类,所以它是 Any 的成员,但不是 AnyObject 的成员。请注意,您需要尽快将此[String:Any] 解析为真实(非任何)数据结构;绝对不要将其存储在属性中。使用Any 会很快变得令人抓狂。看看新的 Swift 4 JSONDecoder,它通过 JSONSerialization 避免了这个问题。
  • 谢谢大家!有效!我是ios新手!我来自 Javascript,语法更有意义:)

标签: arrays json swift dictionary


【解决方案1】:

变化:

let parsedResult = [String:AnyObject]()

收件人:

var parsedResult: [String: Any] = [ : ]

顺便说一句,将parsedResult 声明为var 以便能够执行parsedResult["dataList"] = list

对于您发表评论的其他问题,请改为:

if let account = data?["account"] as? [String: Any], let accountKey = account["key"] as? Int { ... } 

【讨论】:

  • 这成功了!但现在我面临 tis 错误:类型 Any 没有下标成员。帮助?这就是它发生的地方 - if let accountKey = data?["account"]?["key"], let sessionID = data?["session"]?["id"]
  • @ryanwaite28,查看已编辑的帖子。这样做if let account = data?["account"] as? [String: Any], let accountKey = account["key"] as? Int { ... }
  • 谢谢大家!有效!我是ios新手!我来自 Javascript,语法更有意义:)
  • 接受,完成!
猜你喜欢
  • 1970-01-01
  • 2015-06-25
  • 2019-01-23
  • 2021-04-02
  • 1970-01-01
  • 2021-12-27
  • 2021-12-10
  • 2018-08-20
  • 2019-03-14
相关资源
最近更新 更多