在XCode中进行调试时,调试器告诉我NSDictionary对象包含1个键/值对。当调试控制台打印时,将显示键/值对的描述:

Printing description of testdictionary:
{
    "Unknown (<1809>)" = <000000ff>;
}

我想同时提取和。我已经尝试了该站点其他地方介绍的valueForKey和objectforKey方法。但是我认为我很难理解关键是什么,价值是什么。

例如,"Unknown (<1809>)"是密钥吗?还是"<1809>"是密钥?还是1809是密钥?

感谢蒂姆的答复。

NSDictionary来自CoreBluetoothFramework的didDiscoverPeripheral:方法,该方法将广告数据传递到名为“advertisementData”的NSDictionary中。

该词典包含各种内容,例如广告渠道和设备名称。但是,我试图从“advertisementData”中仅提取广告数据。我使用了像这样的corebluetooth“CBAdvertisementDataServiceDataKey”提供的密钥:
NSData* information;
information = [advertisementData objectForKey:CBAdvertisementDataServiceDataKey];

我之前曾将“信息”声明为NSDictionary *对象。但是在对Apple文档进行更多阅读之后,将其更改为NSData *。结果是一样的。调试器说它包含一个键/值对,如下所示:
"Unknown (<1809>)" = <000000ff>;

再次感谢。

尼克

最佳答案

例如,当您不知道字典中存在的键时,由于键值对来自外部来源,则可以使用enumerateKeysAndObjectsUsingBlock:方法遍历字典中存在的所有键值对:

[testdictionary enumerateKeysAndObjectsUsingBlock::^(id key, id object, BOOL *stop) {
    NSLog(@"The key is %@", key);
    NSLog(@"The value is %@", object);
}];

关于ios - 如何从NSDictionary(iOS)中的键/值对中提取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18932559/

10-11 14:24