2010-10-06 3 views
7

У меня есть NSMutableDictionary с некоторыми значениями в нем, и мне нужно, чтобы присоединиться ключи и значения в строку, такАнализировать NSDictionary в строку с пользовательскими разделителями

> name = Fred 
> password = cakeismyfavoritefood 
> email = [email protected] 

становится name=Fred&password=cakeismyfavoritefood&[email protected]

Как может Я делаю это? Есть ли способ присоединиться к NSDictionaries в строки?

ответ

14

Вы можете легко сделать, перечисляя ключи словаря и объекты:

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

Это гениально, спасибо. :) – Emil

+0

Не должен 'yourDict' быть' yourDictionary'? – Andrew

+0

Кроме того, убедитесь, что вы используете 'stringByAddingPercentEscapesUsingEncoding:', чтобы избежать специальных символов и пробелов в вашей строке, чтобы получить юридический url. – Andrew

6

Совершенно такой же вопрос, как 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

Спасибо, я не нашел этот вопрос раньше. (* Возможно, потому что я спросил сначала?:) *) Я не совсем понимаю причину использования 'alloc-init - ** autorelease **' здесь. 'autorelease' следует использовать только в том случае, если это действительно необходимо, так как в этом примере это НЕ (просто отпустите массив после установки (' NSString'). – Emil

+0

* (ах, и, как кто-то сказал в другом вопросе, & 'in the" for "-method не должно быть там) * – Emil

+0

Точный для авторекламы (и &). Автореферат должен был иметь одну строку меньше, но выпуск лучше ... –

Смежные вопросы