чистый способ добавить строку запроса в NSString? - PullRequest
0 голосов
/ 21 марта 2012

Итак, у меня есть строка NSSt с URL-адресом, подобным следующему:

NSString stringWithFormat:@"/reading.php?title=blah&description="blah"&image_url=blah... "

Каков наилучший способ добавить строку запроса к этой строке?Есть ли словарь способ сделать это?

Ответы [ 4 ]

2 голосов
/ 21 марта 2012

То, что вы хотите сделать, это:

[NSString stringWithFormat:@"/reading.php?title=blah&description=%@&image_url=blah... ",blah];
  • В основном% @ в контексте означает, что вы передадите использовать динамическое значение, которое будет строкой.
1 голос
/ 21 марта 2012

Как насчет категории?

Это не здорово, но для первого прохода вам нужно кое-что начать

@interface NSDictionary (ps_additions)

- (NSString *)ps_URLParamsValue;

@end

@implementation NSDictionary (ps_additions)

- (NSString *)ps_URLParamsValue;
{
    NSMutableString *params = [NSMutableString string];

    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
        [params appendFormat:@"%@=%@&", key, obj];
    }];

    return [params copy];
}

@end

В результате получится что-то вроде:

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"42", @"special_number", @"value", @"another", nil];

NSString *myString = [NSString stringWithFormat:@"/reading.php?%@", [params URLParamsValue]];

NSLog(@"%@", myString);

#=> 2012-03-20 23:54:55.855 Untitled[39469:707] /reading.php?another=value&special_number=42&
0 голосов
/ 21 марта 2012

Вы можете использовать что-то вроде:

NSString *parameter1 = @"blah";
NSString *parameter2 = @"anotherblah";
NSString *fullURL = [NSString stringWithFormat:@"/reading.php?title=%@&image_url=%@", parameter1, parameter2];

Вы можете добавить столько параметров, сколько захотите.Используйте "% @", где вы будете динамически добавлять текст.

Удачи:)

0 голосов
/ 21 марта 2012

Копирование вставки от Paul.s - это правильный ответ, imo - и устранение (скорее всего, несущественного) проблемы висящего амперсанда ...

@interface NSDictionary (ps_additions)

- (NSString *)ps_URLParamsValue;

@end

@implementation NSDictionary (ps_additions)

- (NSString *)ps_URLParamsValue;
{
    if (!self.count) return @"";

    NSMutableString *params = [NSMutableString string];

    [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
        [params appendFormat:@"%@=%@&", key, obj];
    }];

    // return everything except that last ampersand
    return [[params copy] substringToIndex:[params length]-1];
}

@ end

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...