我从服务器加载JSON,发现非常奇怪的类型名称,并且不知道该怎么做 使用此
当{J}为:
时,struct _lldb_autogen_pair
的意思是什么,为什么会出现这种情况
原件:
{
"2011.10.06": [
{
"place":"home",
"role":0,
"title":"abc"
}
],
}
更新 我有一个AFHTTPRequestOperationManager的单例子类,所以我做了
client = [[VZWebClient alloc] initWithBaseURL:[NSURL URLWithString:kVZWebClientHostName]];
client.responseSerializer = [AFJSONResponseSerializer serializer];
在NSLOG中,没有任何惊喜
答案 0 :(得分:5)
您正在查看NSDictionary的内容。容器在逻辑上由键==>组成。价值对。
但是,如果你去查看字典的内存中表示,它只是存储一系列对象指针,例如
之类的东西0x123 (key)
0x456 (value)
0x356 (key)
0x577 (value)
...
如果您是LLDB,则需要找到一种方法,将每个密钥与其值组合在一起。在C ++中,这是一个简单的问题,因为你有std :: pair<>您可以使用(并且C ++ std :: map<>倾向于在内部使用该类型来存储条目,因此您可以免费获得分组)。在ObjC中,您需要能够让分组发生的事情。
所以我们所做的就是生成一个假的__lldb_autogen_nspair,基本上归结为
struct __lldb_autogen_nspair { id key; id value; };
我们将NSDictionary作为这些结构的容器。
这个名字几乎就是说"嘿,这是一个LLDB实施细节,不用担心它"。
答案 1 :(得分:2)
__lldb_autogen_pair
是一种私有数据类型,用作LLDB debugger的NSDictionary
键/值对的中间表示。这实际上不是该值的一部分,而是调试器生成的某些内容,允许您在该接口中检查它。
双下划线(__
)前缀通常表示私有类型,是您不应该担心的事情。