Ios 目标C在NSDictionary中迭代和使用NSDictionary

Ios 目标C在NSDictionary中迭代和使用NSDictionary,ios,objective-c,Ios,Objective C,我试图在NSDictionary中循环使用最整洁的NSDictionary 目前我有这个,它返回第一个NSDictionary项 NSDictionary *json = [NSJSONSerialization JSONObjectWithData:response for (NSString *tempObject in json ) { NSLog(@"Single element: %@", tempObject); } 以上方法很好 但是我想读一个更低的数组层,但是打击失败

我试图在NSDictionary中循环使用最整洁的NSDictionary

目前我有这个,它返回第一个NSDictionary项

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:response

for (NSString *tempObject in json ) {
    NSLog(@"Single element: %@", tempObject);
}
以上方法很好

但是我想读一个更低的数组层,但是打击失败了

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:response options:kNilOptions error:&error];

for (id tempObject in json ) {
    NSLog(@"Object: %@, Key: %@", [json objectForKey:tempObject], tempObject);
}

感谢Mich

检查反序列化对象中是否包含数组或字典总是好的。您可以在尝试访问对象之前检查对象的类型。像这样的

    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:response options:kNilOptions error:&error];

    for (id jsonObject in json ) {
        NSLog(@"Object: %@, Key: %@", [json objectForKey:tempObject], tempObject);
            if ([jsonObject isKindOfClass:[NSDictionary class]]){

                NSDictionary *deserializedDictionary = jsonObject;
                NSLog(@"Deserialized JSON Dictionary = %@",
                      deserializedDictionary);

            }
            else if ([jsonObject isKindOfClass:[NSArray class]]){

                NSArray *deserializedArray = (NSArray *)jsonObject;
                NSLog(@"Deserialized JSON Array = %@", deserializedArray);

            }
            else {
                /* Some other object was returned. We don't know how to 
                 deal with this situation as the deserializer only 
                 returns dictionaries or arrays */
            }
    }
希望它能帮助你

NSDictionary *json = [NSJSONSerialization JSONObjectWithData:response options:kNilOptions error:&error];

    for (NSString *tempObject in json ) {
        NSLog(@"Object: %@, Key: %@", [json objectForKey:tempObject], tempObject);

        NSLog(@"Object: %@, Key: %@", [json valueForKey:tempObject], tempObject);
    }
//或者使用快速枚举

[json enumerateKeysAndObjectsUsingBlock:^(id key, id object, BOOL *stop) {
    NSLog(@"@@@@Key Value is:%@ = %@", key, object);
}];

希望它能帮助你

你能发布json字典的内容吗?它包含什么?它是如何失败的?您会得到什么错误?json内容来自API