Как да дефинирате URL адреса на API в Objective-C

Искам да дефинирам URL адресите на API в един заглавен файл, като например

#define BASE_URL                    @"http://xxx.xxx.xxx.xxx/api"

#define POSTS                       BASE_URL @"/user_posts"
#define kAPI_GET_POSTS_LIST_URL     POSTS
#define kAPI_ADD_LIKE_URL(id)       POSTS @"/" id @"/like"

......

Но не работи, когато „id“ е динамичен. Има ли по-добри начини за организиране на URL адреси на API?


person Khoren Markosyan    schedule 28.11.2014    source източник
comment
Бих препоръчал да не използвате #define. Няма особено добра причина да го правите в сравнение с предоставянето на NSString const.   -  person nhgrif    schedule 28.11.2014
comment
Това и само това е верният отговор.   -  person Amin Negm-Awad    schedule 28.11.2014
comment
Предложение за дизайн: направете обект, който обработва вашите API заявки и създайте метод за създаване на URL адреси на API и използване на NSString* const за константи.   -  person Ben Affleck    schedule 28.11.2014


Отговори (3)


bari или ;),
Можете да дефинирате така

#define BASE_URL                    @"http://xxx.xxx.xxx.xxx/api"

#define POSTS                       BASE_URL @"/user_posts"
#define kAPI_GET_POSTS_LIST_URL     POSTS
#define kAPI_ADD_LIKE_URL(id)       [NSString stringWithFormat:@"%@/%@/like", POSTS, id]

И го използвайте

NSString *someId = @"5";
kAPI_ADD_LIKE_URL(someId);
person l0gg3r    schedule 28.11.2014
comment
мерси;) но в този случай е необходимо да се пише навсякъде [NSString ......], което не е много хубаво ... но работи)) - person Khoren Markosyan; 28.11.2014
comment
да, ако низът е генериран по време на изпълнение, тогава той не може да бъде обработен по време на компилиране. Така че, когато декларирате низове в код, те се поставят в сегмента .DATA във вашия двоичен файл и могат да бъдат свързани чрез пространство, но по време на изпълнение трябва да извикате метод за изпълнение, който ще конструира нов низ. ;) - person l0gg3r; 28.11.2014

Опитайте тази.

#define kAPI_ADD_LIKE_URL(id)       [NSString stringWithFormat:@"%@/%d/lik",POSTS,id]
person Sunny Shah    schedule 28.11.2014

Опитайте тази,

#define BASE_URL                    @"http://www.........."
#define POST                        [NSString stringWithFormat:@"%@/user_posts",BASE_URL]
#define kAPI_GET_POSTS_LIST_URL     POSTS
#define kAPI_ADD_LIKE_URL(uri)      [NSString stringWithFormat:@"%@/%@/like",POSTS,uri]

Надявам се това да помогне :)

person Augustine P A    schedule 28.11.2014