相关疑难解决方法(0)

使用快速枚举和NSDictionary,不能保证按键的顺序迭代 - 我怎样才能按顺序进行迭代?

我正在与一个API进行通信,该API将我的应用程序所需的数据作为响应发送回NSDictionary(数据基本上是一个提要).此数据按最新到最旧排序,最新项目位于NSDictionary的前面.

当我快速枚举它们时for (NSString *key in articles) { ... },顺序似乎是随机的,因此我操作它们的顺序不是从最新到最旧,就像我想要的那样,而是完全随机的.

我已经读过了,当使用NSDictionary的快速枚举时,不保证按顺序迭代通过数组.

但是,我需要它.如何按NSDictionary所在的顺序迭代NSDictionary?

objective-c nsdictionary fast-enumeration for-in-loop ios

13
推荐指数
2
解决办法
2万
查看次数

在包含@字符的密钥的NSDictionary中获取valueForKey时出错

我试图在以下名为'robotDesign'的NSDictionary中获取"@type"键的值

robotDesign : {
    "@id" = "2";
    "@type" = "piggyDash";
    turnAngle = "-90";
    width = "90.0";
}
Run Code Online (Sandbox Code Playgroud)

这是我使用的JSON对象的一部分

[NSJSONSerialization JSONObjectWithData: options: error:];
Run Code Online (Sandbox Code Playgroud)

我使用以下代码来提取@type值

NSString * robot_type = (NSString*)[robotDesign valueForKey:@"@type"];
Run Code Online (Sandbox Code Playgroud)

但是请注意以下错误:

由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[<__ NSCFDictionary 0x71de9e0> valueForUndefinedKey:]:此类不是密钥类型的密钥值编码兼容.

注意:请注意,字典中的其他对象如'turnAngle'和'width'可以使用上面给出的相同代码轻松提取,但使用各自的键.

cocoa-touch objective-c nsdictionary nsstring ios

6
推荐指数
2
解决办法
3298
查看次数