2010-10-06 8 views

Odpowiedz

14

Można to łatwo zrobić wyliczanie klucze i obiekty słownika:

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

To genialne, dziękuję. :) – Emil

+0

Czy 'yourDict' nie powinien być' yourDictionary'? – Andrew

+0

Upewnij się również, że używasz 'stringByAddingPercentEscapesUsingEncoding:', aby uniknąć specjalnych znaków i spacji w łańcuchu, aby uzyskać legalny adres URL. – Andrew

6

Dość samo pytanie jak 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

Dzięki, nie znalazłem wcześniej tego pytania. (* Może dlatego, że zapytałem pierwszy?:) *) Nie widzę jednak powodu, aby używać 'alloc-init - ** autorelease **' tutaj. 'autorelease' powinno być użyte tylko jeśli jest to naprawdę konieczne, ponieważ NIE jest w tym przykładzie (po prostu zwolnij tablicę po ustawieniu (' NSString'). – Emil

+0

* (o, a jak ktoś powiedział w drugim pytaniu, '' & 'inside the" for "-metod nie powinno tam być) * – Emil

+0

Dokładny dla autorelease (i &). Autorelease miał mieć jedną linię mniej, ale wydanie jest lepsze ... –