从其他常量构build一个常量variables列表

我刚刚读了所有的Objective-C全局常量variables问答,但是我发现它们不适合我的问题。

我需要一个这样的variables列表:

NSString *baseURL = @"http://example.org"; NSString *mediaURL = @"http://example.org/media/"; NSString *loginURL = @"http://example.org/login/"; NSString *postURL = @"http://example.org/post/"; etc. 

当然,我不能使用这个代码,因为这是一个非常糟糕的方法,如果我需要更改基础url,我必须更改所有variables。 因为我需要从应用程序的每个类访问这些variables,所以我用这种方法将它们声明为全局variables:

 // Constants.h extern NSString *const baseURL; extern NSString *const mediaURL; extern NSString *const loginURL; extern NSString *const postURL; 

 // Constants.m NSString *const baseURL = @"http://example.org"; NSString *const mediaURL = [NSString stringWithFormat:"%@%@", baseURL, @"/media/"]; NSString *const loginURL = [NSString stringWithFormat:"%@%@", baseURL, @"/login/"]; NSString *const postURL = [NSString stringWithFormat:"%@%@", baseURL, @"/post/"]; 

我不能这样做,因为我得到这个错误:

 Initializer element is not a compile-time constant 

这是因为对象在运行时工作。

现在我的问题是,一劳永逸,我希望在networking应用程序中处理这种相当平常的情况是一个不错的方法。

我认为使用一个类(或一个单例类)来处理常量variables有点矫枉过正,而且每当我需要它时,也使用类似[MyClass globalVar]过于冗长的[MyClass globalVar]

关于它的想法?

我知道这是老式的,但我只是使用预处理macros,让常量string连接处理它。

 #define baseURL @"http://example.org" #define mediaURL baseURL@"/media/" 
 #define API_ROOT_URL @"https://www.example.org/api" NSString *const OAuthUrl = API_ROOT_URL @"/oauthToken"; 

也可以看看。

我现在无法访问MAC …你可以试试这个..

在.h

 NSString *baseURLString; extern NSString *const baseURL; 

以.m

 baseURLString= @"http://example.org"; NSString *const baseURL= [NSString stringWithFormat:"%@", baseURL]; 

我不知道这会工作..

你也看到了这个答案…它有我所知道的所有方法… Objective-C中的常量