为什么string在引用中显示在NSDictionary,但其他人不?

所以我有一个NSMutableDictionary,我填充,但是当我输出的内容NSLog,在for循环中input的项的键和值显示不同,最后的NSLog调用甚至不输出任何东西。 这里发生了什么??? 请帮忙! 为什么在for循环中添加条目的引号?

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: numberOfPhotosAsString, @"PackageFileCount", wtID, @"wtID", uploadType, @"type", nil]; for (int i= 0; i < photos.count; i++) { NSString *finalFileName = [fileNameBase stringByAppendingFormat:@"%i", i]; [params setObject:[[fileNames objectAtIndex:i] stringByAppendingString:@".jpg"] forKey:finalFileName]; // This one doesn't do anything differently: //[params setValue:[[fileNames objectAtIndex:i] stringByAppendingString:@".jpg"] forKey:[fileNameBase stringByAppendingFormat:@"%i", i]]; } NSLog(@"Params: %@", params); NSLog(@"Value: %@", [params objectForKey:@"SourceName_0"]); 

NSLog的输出(我只在for循环中添加了一个值:“SourceName_0”=“tbyg.jpg”,但为什么引用“SourceName_0”???无论发生什么都阻止我访问该字典条目…

日志:

 2012-05-09 12:38:26.448 PhotoUp[6231:707] Params: { PackageFileCount = 1; "SourceName_0" = "tbyg.jpg"; type = T; wtID = "6bcb4126-4bbe-4b3d-be45-9a06cf56a22f"; } 2012-05-09 12:38:26.449 PhotoUp[6231:707] Value: (null) 

引号出现的原因是string包含除了基本字母数字之外的东西 – 在这种情况下是下划线。 "tbyg.jpg""6bcb4126-4bbe-4b3d-be45-9a06cf56a22f"引号是相同的(分别包含点和破折号)。 这就是description方法的工作原理。 这不会导致你的第二个日志失败。