6

したがって、入力する 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" という値を 1 つだけ追加しましたが、"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)
4

1 に答える 1

14

文字列に基本的な英数字以外の何か (この場合はアンダースコア) が含まれているため、引用符が表示されます。同じ理由"tbyg.jpg"で、"6bcb4126-4bbe-4b3d-be45-9a06cf56a22f"引用符があります (それぞれドットとダッシュが含まれています)。それがdescription方法の仕組みです。2 番目のログが失敗することはありません。

于 2012-05-09T17:24:00.200 に答える