【发布时间】:2012-05-18 05:28:06
【问题描述】:
所以我有一个填充的 NSMutableDictionary,但是当我将内容输出到 NSLog 时,在 for 循环中输入的条目的键和值显示不同,最终的 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)
【问题讨论】:
-
"SourceName_0"是什么对象?您可以使用NSStringFromClass遍历键并记录类型。 -
它们都应该是字符串,但 type 和 wtID 也是字符串,但不要出现在引号中......我不明白......问题是我使用这些发布到网络表单,当我处理网络表单时,它没有找到“SourceName_x”...看看我的最后一行代码,然后查看它的日志输出...
-
出现引号是因为字符串包含基本字母数字以外的内容——在本例中是下划线。我认为这与您的问题无关。我无法通过将此代码复制并粘贴到文件中来重现它(并使用显示的值填充未声明的变量),因此问题一定是您没有向我们展示的问题。
-
嗯,引号是在
NSDictionarysdescription方法中定义的实现。根据我个人的观察,您通常只会在字符串中有空格或符号时看到引号。在您的情况下,SourceName_0中的_,tbyg.jpg中的.,然后wtID中的-。 -
所有代码都在这里。我将字典传递给 NSMutableURLRequest,但是当网页处理请求时,它会将键“SourceName_x”的值视为 nil。我决定使用 NSLog 输出字典的内容,它显示在那里(但带有引号),然后当我尝试使用 NSLog 输出该值时,它显示为 nil...
标签: objective-c ios nsdictionary nslog