如何从iphone中的未知键获取值?
在解析Webservice响应中的值时,我还有一个大问题。我不知道webservice响应中值的键。比如说,如何从iphone中的未知键获取值?,iphone,web-services,nsdictionary,Iphone,Web Services,Nsdictionary,在解析Webservice响应中的值时,我还有一个大问题。我不知道webservice响应中值的键。比如说, class = ( { "ObjectiveC" = ( { "brief_desc" = "ObjectiveC"; date = "2008-02-27"
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的无法识别的选择器”中收到了崩溃原因。对不起打扰了。请帮助解决此问题。谢谢。是的,我在之前的评论中发布的代码是错误的。我用正确的代码更新了答案。