2010-10-06 50 views

Répondre

14

Vous pouvez facilement faire de dictionnaire qui énumèrent les clés et les objets:

NSMutableString *resultString = [NSMutableString string]; 
for (NSString* key in [yourDictionary allKeys]){ 
    if ([resultString length]>0) 
     [resultString appendString:@"&"]; 
    [resultString appendFormat:@"%@=%@", key, [yourDict objectForKey:key]]; 
} 
+0

C'est génial, je vous remercie. :) – Emil

+0

Est-ce que 'yourDict' ne devrait pas être' yourDictionary'? – Andrew

+0

En outre, assurez-vous d'utiliser 'stringByAddingPercentEscapesUsingEncoding:' pour échapper les caractères spéciaux et les espaces dans votre chaîne afin d'obtenir une URL légale. – Andrew

6

tout à fait la même question que Turning a NSDictionary into a string using blocks?

NSMutableArray* parametersArray = [[NSMutableArray alloc] init]; 
[yourDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 
    [parametersArray addObject:[NSString stringWithFormat:@"%@=%@", key, obj]]; 
}]; 
NSString* parameterString = [parametersArray componentsJoinedByString:@"&"]; 
[parametersArray release]; 
+0

Merci, je n'ai pas trouvé cette question avant. (* Peut-être parce que j'ai demandé d'abord?:) *) Je ne vois pas vraiment la raison d'utiliser 'alloc-init - ** autorelease **' ici, cependant. 'autorelease' ne devrait être utilisé que si c'est vraiment nécessaire, car ce n'est PAS dans cet exemple (libérez simplement le tableau après avoir réglé le' ('NSString') – Emil

+0

* (oh, et comme quelqu'un l'a dit dans l'autre question, le' & 'à l'intérieur du" pour "-method ne devrait pas être là) * – Emil

+0

Exact pour l'autorelease (et le &.) La autorelease devait avoir une ligne de moins, mais la version est meilleure ... –