【问题标题】:Optional Binding (String: AnyObject) to [String]到 [String] 的可选绑定(字符串:AnyObject)
【发布时间】:2014-12-15 17:09:13
【问题描述】:

我有一个从 AFNetworking 检索到的 JSON 对象/字典,我想有条件地将密钥解包到一个字符串数组中。

var person: [String : AnyObject] = ...

if let interests = person["interests"] as [String]{
   // Do something
}

我收到以下错误消息:(String : AnyObject) is not convertible to [String]。我不认为我可以将person 类型转换为[String : Any],因为它从AFNetworking 框架中输出为[String : AnyObject]。任何想法将不胜感激。

【问题讨论】:

  • 你没有说实话。没有人可以根据您展示的内容进行复制。显示您的真实代码。不要手动输入:复制和粘贴,以便我们准确地看到您在说什么。
  • @matt。您可以轻松地重现代码。我基本上已经写了我在Playground 中发布的内容并截图了。 i.imgur.com/2aSAjRe.png
  • 因为你没有导入 UIKit。看看我的截图胜过你的截图!
  • @matt 我和其他人一样想解决这个问题,但我仍然遇到编译错误:i.imgur.com/gu9wtHe.png

标签: swift afnetworking conditional-binding


【解决方案1】:

更新您的 Xcode。您使用的是旧版本。在 Xcode 6.1 之前,String 不被视为对象类型:您必须改用 NSString

if let interests = person["interests"] as? [NSString] {

Apple 修复了该问题,因此现在可以在 Xcode 6.1 中使用:

if let interests = person["interests"] as? [String] {

由于 Swift 发展迅速,建议您及时了解最新发布的 Xcode 版本,在撰写本文时为 Xcode 6.1.1。

【讨论】:

    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2014-12-02
    相关资源
    最近更新 更多