Objective-C转换错误

时间:2015-03-28 20:42:49

标签: ios objective-c swift

我正在开展一个项目。该项目使用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&#39?;没有名为'下标'

的成员

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

由于 !

1 个答案:

答案 0 :(得分:1)

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

  1. 致电posts。返回NSDictionary

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

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

  4. 您需要将其更改为:

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

    现在发生了这样的事情:

    1. 致电posts。返回NSDictionary

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

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

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

    5. 将其投放到NSMutableDictionary。我相信一个演员也会解开它。

    6. 使用结果调用setPost