【问题标题】:Cannot subscript a value of type '[String: AnyObject]' with an index of type 'String'无法使用“String”类型的索引为“[String: AnyObject]”类型的值下标
【发布时间】:2016-01-16 09:18:37
【问题描述】:

这不是问题的重复

不能为“[NSObject : AnyObject]?”类型的值下标?具有“字符串”类型的索引

不能为“[String : String]?”类型的值下标?具有“字符串”类型的索引

原因是我的字典不是可选的,这就是那个问题的问题。为什么我不能下标这个...

【问题讨论】:

  • 也许alert.sourceID = Int(msg["srcID"])
  • alert.sourceID = msg["srcID"] as? Int 这似乎奏效了。这很奇怪,因为它抱怨的似乎是别的东西

标签: ios swift dictionary


【解决方案1】:

使用下标访问字典总是返回一个可选值。这是因为您无法告诉字典您将始终使用键列表中存在的下标。 (即使你可以,它也不会相信你:)。

【讨论】:

  • 这应该是公认的答案。仍然很奇怪它没有抱怨实际问题(使用返回值不是可选的)。
  • 不,实际的问题是返回类型与我分配的类型不同;问题不在于返回类型是可选的,因为通过使用 as 强制转换来修复它?仍然会产生一个可选的返回值,但问题已解决。
猜你喜欢
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多