Вложенный #defines для создания URL? - PullRequest
0 голосов
/ 24 марта 2012

Я хочу, чтобы некоторые URL были жестко закодированы #define s. Некоторые из них требуют имени пользователя. Я ищу возможность сделать следующее:

#define kUserName John
#define kUserInfoURL(USERNAME) [NSURL URLWithString:@"http://a.com/USERNAME"]

Можно ли это сделать?

1 Ответ

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

Это можно сделать, это называется stringification ( см. Ссылку ):

#define kUserInfoURL(USERNAME) [NSURL URLWithString:@"http://a.com/" #USERNAME]

Однако это будет работать только с жестко закодированными именами пользователей. Если вы передадите переменную, вы получите имя переменной, а не ее содержимое. Почему бы вам не создать метод или функцию, которая будет возвращать вам то же самое?

Пример:


#define kBaseUrl @"http://a.com"

- (NSURL*)createUrlForUser:(NSString*)username {
   NSString* url = [NSString stringWithFormat:@"%@/%@", kBaseUrl, username];
   return [NSURL URLWithString:url];
}
...