如何从iphone中的未知键获取值?

如何从iphone中的未知键获取值?,iphone,web-services,nsdictionary,Iphone,Web Services,Nsdictionary,在解析Webservice响应中的值时,我还有一个大问题。我不知道webservice响应中值的键。比如说, class = ( { "ObjectiveC" = ( { "brief_desc" = "ObjectiveC"; date = "2008-02-27"

在解析Webservice响应中的值时,我还有一个大问题。我不知道webservice响应中值的键。比如说,

class =     (
                {
            "ObjectiveC" =   
         (
                                {
                    "brief_desc" = "ObjectiveC";
                    date = "2008-02-27";
                    "event_status" = Attended;
                },
                                {
                    "brief_desc" = "ObjectiveC";
                    date = "2008-03-05";
                    "event_status" = Attended;
                },
                                {
                    "brief_desc" = "ObjectiveC";
                    date = "2008-03-12";
                    "event_status" = Missed;
                },
            ); 
        },
                {
            "Java" =             (
 {
                    "brief_desc" = "Java";
                    date = "2008-02-27";
                    "event_status" = Attended;
                },
                                {
                    "brief_desc" = "Java";
                    date = "2008-03-05";
                    "event_status" = Attended;
                },
                                {
                    "brief_desc" = "Java";
                    date = "2008-03-12";
                    "event_status" = Missed;
                },
            );
        }
    );
在这个响应中,我们甚至不知道键“ObjectiveC”和“Java”。在返回的每个响应中,键(“Objective和Java”)都应该更改。如何获取键(未知键)的值?如何解析此响应并获取值

NSDictionary包含
-(NSArray*)所有键
-(NSArray*)所有值
。其中一个可能会有帮助

NSDictionary * lessonDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"Key", @"Value", @"Key 2", @"Value 2", nil];
    NSArray *values = [lessonDict allValues];

    NSArray *keys = [lessonDict allKeys];
    NSLog(@"Keys: %@",keys);
    NSLog(@"Values: %@",values);
NSDictionary具有
-(NSArray*)所有键
-(NSArray*)所有值
。其中一个可能会有帮助

NSDictionary * lessonDict = [[NSDictionary alloc] initWithObjectsAndKeys:@"Key", @"Value", @"Key 2", @"Value 2", nil];
    NSArray *values = [lessonDict allValues];

    NSArray *keys = [lessonDict allKeys];
    NSLog(@"Keys: %@",keys);
    NSLog(@"Values: %@",values);

我将通过枚举键来获得值。下面是objective-c中的枚举示例

NSEnumerator *enumerator = [myDictionary keyEnumerator];
id key;
while ((key = [enumerator nextObject])) {
    //assuming value will be string
    NSString *valueForKey = [myDictionary valueForKey:key]; 

    //assuming value is another dictionary
    NSDictionary *subDictionary = [myDictionary objectForKey:key];
}

如果您不知道子字典的键,也可以通过这些子字典进行枚举。

我会通过枚举键来获得值。下面是objective-c中的枚举示例

NSEnumerator *enumerator = [myDictionary keyEnumerator];
id key;
while ((key = [enumerator nextObject])) {
    //assuming value will be string
    NSString *valueForKey = [myDictionary valueForKey:key]; 

    //assuming value is another dictionary
    NSDictionary *subDictionary = [myDictionary objectForKey:key];
}

如果您不知道子字典的键,也可以通过这些子字典进行枚举。

谢谢Syclonefx先生。我还使用此代码检索密钥,但失败了。NSMutableDictionary*lessonDictionary=[[NSMutableDictionary alloc]init];lessonDictionary=[invoiceDic valueForKey:@“class”];NSLog(@“课程Dic:%@,计数:%d”,lessonDictionary,[lessonDictionary计数]);对于(在[lessonDictionary allkeys]中的id键){NSLog(@“key:%@”,key);}我已经尝试了此代码,但是应用程序在(在[lessonDictionary allkeys]中的id键)行中崩溃。谢谢。我使用了你的上一个建议,但它显示了警告“Instance method'-allkeys:'未找到(返回类型默认为'id')”,并且应用程序在这一行中崩溃“[keys-allkeys:lessondict]”。我在调试器控制台“+[sampleScreen allKeys:]:发送到类0x8fa98的无法识别的选择器”中收到了崩溃原因。对不起打扰了。请帮助解决此问题。谢谢。是的,我在之前的评论中发布的代码是错误的。我用正确的代码更新了答案。谢谢Syclonefx先生。我还使用此代码检索密钥,但失败了。NSMutableDictionary*lessonDictionary=[[NSMutableDictionary alloc]init];lessonDictionary=[invoiceDic valueForKey:@“class”];NSLog(@“课程Dic:%@,计数:%d”,lessonDictionary,[lessonDictionary计数]);对于(在[lessonDictionary allkeys]中的id键){NSLog(@“key:%@”,key);}我已经尝试了此代码,但是应用程序在(在[lessonDictionary allkeys]中的id键)行中崩溃。谢谢。我使用了你的上一个建议,但它显示了警告“Instance method'-allkeys:'未找到(返回类型默认为'id')”,并且应用程序在这一行中崩溃“[keys-allkeys:lessondict]”。我在调试器控制台“+[sampleScreen allKeys:]:发送到类0x8fa98的无法识别的选择器”中收到了崩溃原因。对不起打扰了。请帮助解决此问题。谢谢。是的,我在之前的评论中发布的代码是错误的。我用正确的代码更新了答案。