2010-10-06 11 views

risposta

14

si può facilmente farlo enumerazione chiavi del dizionario e gli oggetti:

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

Questo è brillante, grazie. :) – Emil

+0

Non dovresti 'yourDict' essere' yourDictionary'? – Andrew

+0

Inoltre, assicurati di utilizzare 'stringByAddingPercentEscapesUsingEncoding:' per evitare caratteri speciali e spazi nella stringa in modo da ottenere un URL legale. – Andrew

6

Piuttosto stessa domanda come 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

Grazie, non ho trovato questa domanda prima. (* Forse perché ho chiesto prima?:) *) Qui non vedo il motivo per usare 'alloc-init - ** autorelease **'. 'autorelease' dovrebbe essere usato solo se è veramente necessario, come NON è in questo esempio (semplicemente rilascia l'array dopo aver impostato il' 'NSString'). – Emil

+0

* (oh, e come qualcuno ha detto nell'altra domanda, il' & 'all'interno del" for "-method non dovrebbe essere lì) * – Emil

+0

Esatto per la autorelease (e il &). L'autorelease doveva avere una riga in meno, ma il rilascio è migliore ... –