我有一个很长的网址列表,我的应用用来从服务器检索数据。目前,每个网址都有自己的常量,即:
// constants.h
extern NSString * const profileUrl;
// constants.m
NSString * const profileUrl = @"http://api.site.com/profile";
.
.
这不是什么大不了的事,但如果我想改变基本网址,我必须进入并在每个常量中手动替换所有这些。如果可以的话,我想保持DRY哲学(不要重复自己)。就像我现在正在做的事情一样。
// constants.h
extern NSString * const baseUrl;
extern NSString * const profileUrl;
// constants.m
NSString * const baseUrl = @"http://api.site.com/";
NSString * const profileUrl = [NSString stringWithFormat:@"%@%@", baseUrl, @"profile"];
如果是这样,是否有一种标准的方式来有序地处理您的应用程序网址?您使用哪些技术可以让您的生活更轻松?
答案 0 :(得分:0)
只需使用:
NSDictionary *profileURLS = [NSDictionary dictionaryWithValues:[NSArray yourArrayOfProfileURLS] forKeys:[NSArray yourArrayOfCorrespondingProfiles]];
NSString *baseURL = @"baseURLHere";
NSString *newURL = [baseURL stringByAppeningString:[profileURLS valueForKey: profileName]];
如果我理解正确的话,我认为这应该适合你正在做的事情
答案 1 :(得分:0)
我有一个基本网址,我保存在MyAppDelegate中:
在MyAppDelegate .h
extern NSString * const SERVER_URL;
在MyAppDelegate.m中
NSString *const SERVER_URL = @"http://111.11.11.1";
然后访问它只需导入MyAppDelegate.h
NSString *url = [SERVER_URL stringByAppendingString:@"/your_request"];
答案 2 :(得分:0)
我将它们保存在一个字符串文件中。这样,如果本地化应用的URL不同,那么很容易适应资源本地化。
答案 3 :(得分:0)
最简单的方法是使用宏:
#define FOOBAR_BASE @"http://www.example.com/"
#define FOOBAR_API_BAZ FOOBAR_BASE "baz"
您甚至可以使用NSString * const BarUrl = FOOBAR_BASE "baz";
执行此操作。
如果你有一个“服务器”,这很好。当你有多个服务器要从同一个应用程序访问而不重新编译(dev / production?)时,它会变得更加混乱。
在我们的一个应用程序中,我们只有一个巨大的头文件,这比继承的代码库中到处散落的文字字符串要好得多......