У меня есть файл с именем Constants.h :
extern NSString * const BASE_URL;
и Constants.m :
#ifdef DEBUG
NSString * const BASE_URL = @"http://www.example.org ";
#else
NSString * const BASE_URL = @"http://localhost";
#endif
Первый вопрос: Как я могу переключить DEBUG на True
и False
?
У меня есть файл контроллера представления MyViewController.m
:
#import "MyViewController.h"
#import "Constants.h"
// this doesn't works. see above for the error.
static NSString * const ANOTHER_URL = [NSString stringWithFormat:@"%@%@", BASE_URL, @"/path/"];
@implementation HomeViewController
[...]
Код неработать и возвращает мне эту ошибку:
error: Semantic Issue: Initializer element is not a compile-time constant
Как я могу это исправить?
Мне нужно объединить несколько глобальных строковых переменных с другими строками для создания различных URL-адресов.
ОБНОВЛЕНИЕ 1
Сейчас Constants.m
равно:
#import "Constants.h"
#ifdef DEBUG
#define DEF_BASE_URL "http://www.example.org/"
#else
#define DEF_BASE_URL "http://localhost/"
#endif
NSString * const BASE_URL = (NSString*)CFSTR(DEF_BASE_URL);
NSString * const API_URL = (NSString*)CFSTR(DEF_BASE_URL "api/");
NSString * const API_SETTINGS_URL = (NSString*)CFSTR(API_URL "settings/");
Но в последней строке есть ошибка Ошибка разбора: ожидается ')«.Вероятно, я могу использовать CFSTR только с макросами.Мне нужно найти способ иметь все мои глобальные переменные.