1

ブロックを使用してこれを行う方法があると確信していますが、私にはわかりません。NSDictionaryをURLスタイルのパラメーター文字列に変換したいと思います。次のようなNSDictionaryがある場合:

dict = [NSDictionary dictionaryWithObjectsAndKeys:@"blue", @"color", @"large", @"size", nil]];

次に、それを次のような文字列に変換するにはどうすればよいですか。

"color=blue&size=large"

編集

以下の手がかりをありがとう。これはそれを行う必要があります:

NSMutableString *parameterString;
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    [parameterString appendFormat:@"%@=%@&", key, obj];
}];
parameterString = [parameterString substringToIndex:[string length] - 1];
4

3 に答える 3

6

まったく同じ解決策ですが、部分文字列はありません。

NSMutableArray* parametersArray = [[[NSMutableArray alloc] init] autorelease];
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    [parametersArray addObject:[NSString stringWithFormat:@"%@=%@", key, obj]];
}];
NSString* parameterString = [parametersArray componentsJoinedByString:@"&"];
于 2010-10-08T11:43:53.090 に答える
2

可変文字列を作成してから、辞書を繰り返して各キーを取得します。そのキーの値をkey=value&検索し、文字列にを追加します。そのループが終了したら、最後の&を削除します。

これはURLを介して供給されると思いますが、文字列に&や+などの項目が含まれている場合に備えて、文字列をエンコードするメソッドも必要になります。

于 2010-10-08T09:40:25.340 に答える
2
NSMutableString* yourString = @"";

for (id key in dict) {
     [yourString appendFormat:@"%@=%@&", key, ((NSString*)[dict objectForKey:key])];
}

NSRange r;
r.location = 0;
r.size = [yourString length]-1;
[yourString deleteCharactersInRange:r];
于 2010-10-08T09:45:43.630 に答える