1

我有一些 JSON 数据正在尝试放入 NSDictionary。

使用以下代码将数据放入字典中:

NSDictionary *tempDict = [NSDictionary alloc];
tempDict = [NSJSONSerialization JSONObjectWithData:urlData
                                           options:NSJSONReadingMutableContainers
                                             error:&error];

我的问题是,当我尝试运行我期望检索数据的内容时,我遇到了异常。代码是:

NSLog([tempDict valueForKey:@"key"]);

所以我使用以下代码制作了自己的字典:

NSDictionary *test = [[NSDictionary alloc]initWithObjectsAndKeys:@"teststring",@"1",@"teststring2",@"2", nil];
    NSLog([test valueForKey:@"1"]);

这很好用。所以我查看了调试器,发现两个字典之间存在差异。

tempDict    NSDictionary *  0x0920c190
    [0] id  0x0920c150   <----
        [0] key/value pair  
            key id  0x0920c100
            value   id  0x0920bf00
        [1] key/value pair   
            key id  0x0920c120
            value   id  0x0920c140

和:

test    NSDictionary *  0x0920c260
    [0] key/value pair  
        key id  0x0003a430
        value   id  0x0003a420
    [1] key/value pair  
        key id  0x0003a450
        value   id  0x0003a440

我不确定它为什么这样做。是否有人能够阐明情况并建议我如何访问 NSDictionary tempDict 中的 KVP?

4

1 回答 1

2

看起来您的 JSON 文件中的根对象是一个具有单个元素(字典)的数组。尝试这个:

NSArray *array = [NSJSONSerialization JSONObjectWithData:urlData
                                                 options:NSJSONReadingMutableContainers
                                                   error:&error];
NSDictionary *tempDict = array[0];

注意:发送一个alloc没有立即init数的对象很少(如果有的话)是您想要做的。要么使用将返回引用计数为 1 的对象的 alloc/init,要么使用返回自动释放对象的类方法,例如JSONObjectWithData:....

于 2013-05-15T22:10:15.937 回答