【问题标题】:Objective-C Conversion ErrorsObjective-C 转换错误
【发布时间】:2015-03-28 20:42:48
【问题描述】:

我有一个正在进行的项目。该项目使用AFNetworking 2.0 从频道获取 YouTube GDATA 并将其加载到 UITableView 中。我看过 Jared Davidson 的一个教程,它向我展示了如何做到这一点。这很棒,但问题是它在Objective - C 中,而我的项目在Swift 中。我目前正在尝试将一些代码转换为 swift,但我偶然发现了一个问题。

我试过转换这个,

self.post = self.posts[@"data"][@"items"];

到此快速,

self.post = self.posts["data"]["items"] as NSMutableDictionary

但我收到一个错误提示...

'AnyObject?'没有名为“下标”的成员

我已经尝试了很多方法来修复它,但我仍然不知道该怎么做。任何帮助将不胜感激

谢谢 !

【问题讨论】:

  • 与其想知道,为什么不在尝试编写 Swift 代码之前学习 Swift 呢?这些是您要问的非常基本的问题!
  • “我对 swift 了解很多”我不认为你知道。 “只是这些东西我没有学过,部分原因是我从来没有看过关于它们的教程”嗯,这是我的,它可以回答你关于字典的问题:apeth.com/swiftBook/ch04.html#_dictionary
  • @matt 您的教程包含对完全无意义的编译器错误的解释?

标签: ios objective-c swift


【解决方案1】:

访问字典会返回一个可选值,因为该键可能不存在。这是编译器解析它的方式:

  1. 致电posts。返回NSDictionary

  2. 在返回的对象上调用subscript,参数为“数据”。返回一个可选的AnyObject

  3. 在返回的AnyObject? 上调用subscript,参数为“数据”。这会导致错误,因为您需要打开它。

您需要将其更改为:

self.post = self.posts["data"]!["items"] as NSMutableDictionary

现在是这样的:

  1. 致电posts。返回NSDictionary

  2. 在返回的对象上调用subscript,参数为“data”。返回一个可选的AnyObject

  3. 解开可选项。返回AnyObject(非可选)。

  4. 在返回的AnyObject 上调用subscript,参数为“数据”。

  5. 将其转换为 NSMutableDictionary。我相信演员也会解开它。

  6. 致电setPost 告知结果。

【讨论】:

  • 您好,感谢您的回复!它工作得很好,但是当我运行我的应用程序时它崩溃并说致命错误......怎么了?是这行代码吗? self.posts = (responceObject : NSDictionary())
  • @Jesster2k10 self.posts = (responceObject : NSDictionary()) 应该是 self.posts = responceObject as NSDictionary
猜你喜欢
  • 2016-01-04
  • 2012-07-06
  • 2011-11-01
  • 2013-11-06
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多