Iphone 在日志中显示NSMutableDictionary中的每个对象
这里有一个新手问题 我有一本易变的字典 日志中的哪个部分如下所示:Iphone 在日志中显示NSMutableDictionary中的每个对象,iphone,xcode,Iphone,Xcode,这里有一个新手问题 我有一本易变的字典 日志中的哪个部分如下所示: "test1" = "5"; "test2" = "78"; "test3" = "343"; "test4" = "3"; for (int i =0; i<[dict count]; i++){ NSString *str=[dict objectForKey:[NSString stringWithFormat:@"test%d",i+1]]; NSLog(@"%@",str); }
"test1" = "5";
"test2" = "78";
"test3" = "343";
"test4" = "3";
for (int i =0; i<[dict count]; i++){
NSString *str=[dict objectForKey:[NSString stringWithFormat:@"test%d",i+1]];
NSLog(@"%@",str);
}
我需要自己打印每个数字,但我在数组和句子方面非常差
我的想法是:
for (dict) {
double number = [[[dict allKeys] objectAtIndex:0] doubleValue];
NSLog(@"Number: %f",number);
}
我希望在每行的日志中都是这样:
Number: 5
Number: 78
Number: 343
Number: 3
但很明显,我的“FOR”方法是胡言乱语
任何帮助都将不胜感激。您可以使用快速枚举
来执行此操作。它迭代字典中的所有键:
for (NSString *key in dict) {
double number = [[dict objectForKey:key] doubleValue];
NSLog(@"Number: %f", number);
}
为此,可以使用快速枚举for
。它迭代字典中的所有键:
for (NSString *key in dict) {
double number = [[dict objectForKey:key] doubleValue];
NSLog(@"Number: %f", number);
}
如果您只想记录这些数字,请尝试以下操作:
for (NSString *number in dict) {
NSLog(@"Number: %@",[dict objectForKey:number]);
}
如果您只想记录这些数字,请尝试以下操作:
for (NSString *number in dict) {
NSLog(@"Number: %@",[dict objectForKey:number]);
}
第一个答案创建了两个名为“number”的对象。相反,你应该:
for (NSString *key in dict) {
NSLog(@"Number as double: %f", [[dict objectForKey:key] doubleValue]);
NSLog(@"Number as string: %@", [dict objectForKey:key]);
}
快速枚举的好处在于它可以为您创建对象(并自动释放它们)。键是在NSDictionary中快速枚举时提供给您的。因为你现在有了钥匙,你只需要抓住objectAtKey。在您的情况下,它是字典中的一个字符串,因此您必须将其转换为double(或您需要的任何类型),或者作为字符串输出。我为上述两种情况添加了示例。祝你好运 第一个答案创建了两个名为“number”的对象。相反,你应该:
for (NSString *key in dict) {
NSLog(@"Number as double: %f", [[dict objectForKey:key] doubleValue]);
NSLog(@"Number as string: %@", [dict objectForKey:key]);
}
快速枚举的好处在于它可以为您创建对象(并自动释放它们)。键是在NSDictionary中快速枚举时提供给您的。因为你现在有了钥匙,你只需要抓住objectAtKey。在您的情况下,它是字典中的一个字符串,因此您必须将其转换为double(或您需要的任何类型),或者作为字符串输出。我为上述两种情况添加了示例。祝你好运 使用块:
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"5", @"test1",
@"78", @"test2",
@"343", @"test3",
@"3", @"test4",
nil];
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"Number: %@", obj);
}];
NSLog输出:
Number: 5
Number: 3
Number: 343
Number: 78
使用块:
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
@"5", @"test1",
@"78", @"test2",
@"343", @"test3",
@"3", @"test4",
nil];
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"Number: %@", obj);
}];
NSLog输出:
Number: 5
Number: 3
Number: 343
Number: 78
如前所述,在这些情况下,快速枚举更可取,但您也可以这样做:
"test1" = "5";
"test2" = "78";
"test3" = "343";
"test4" = "3";
for (int i =0; i<[dict count]; i++){
NSString *str=[dict objectForKey:[NSString stringWithFormat:@"test%d",i+1]];
NSLog(@"%@",str);
}
for(int i=0;i如前所述,在这些情况下,最好使用快速枚举,但您也可以这样做:
"test1" = "5";
"test2" = "78";
"test3" = "343";
"test4" = "3";
for (int i =0; i<[dict count]; i++){
NSString *str=[dict objectForKey:[NSString stringWithFormat:@"test%d",i+1]];
NSLog(@"%@",str);
}
for(int i=0;iThat给我“发送”Double到不兼容类型“id”的参数@Luiz我认为这些值他发布的是字符串,而不是数字。@JohnSmith我对我的代码做了一个更正:将fomnumber
键的名称更改为key
,因为number
与循环中的double
变量冲突。@Mat你说得对,这些值确实是字符串,但他想将它们打印成flo格式ats使用NSLog
。这给了我“发送”双精度到不兼容类型“id”的参数@Luiz我认为他发布的是字符串,而不是数字。@JohnSmith我对我的代码做了一个更正:将fomnumber
键的名称更改为key
,因为number
与循环中的double
变量冲突。@Mat你说得对,这些值确实是字符串,但他想将它们打印成flo格式ats使用NSLog
。