小编sha*_*ooo的帖子

在包含@字符的密钥的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
查看次数

STL容器列表,双端队列,向量等的基类是什么?

我想编写一个函数,可以使用STL通用列表,双端队列或向量,并在其中搜索密钥.这个函数的方法签名是什么?我们如何实现它?

我所知道的是,如果我们接受函数参数中的任何派生类,我们可以使用基本抽象类,假设所有相关的派生类都具有您的问题所需的函数.

编辑:我们不能在函数参数中传递容器的迭代器.如果我们能做到这一点很容易.它必须是一个容器.

我在想:假设'Container'是来自STL容器的抽象基类(根据下面的第一个答案,它不是).

模板bool搜索(std :: Container C,T&key);

谢谢

c++ search templates stl

3
推荐指数
2
解决办法
3849
查看次数

当我点击一个时,如何继续添加首选项?

我有个问题.我想让用户自由选择我的应用程序中的许多蓝牙设备.现在我不知道有多少蓝牙设备,所以我想知道是否可以给用户一个选项,点击"添加新的蓝牙设备"自定义首选项并打开一个新的首选项屏幕,让他选择新的蓝牙设置设备?

总之,显示器看起来像:

添加新的蓝牙设备..

如果用户添加一个,它应该如下所示:

蓝牙设备1

添加新的Blutooth设备..

如果用户添加另一个,它应该看起来像:

蓝牙设备1

蓝牙设备2

添加新的蓝牙设备..

我知道如何使用标准首选项和基本编码.我唯一想知道的是如何在运行时继续为这些设备添加设置.我将不胜感激.谢谢.

android preferences

1
推荐指数
1
解决办法
4117
查看次数