Iphone 如何正确管理我的应用程序URL?

Iphone 如何正确管理我的应用程序URL?,iphone,objective-c,ios,Iphone,Objective C,Ios,我有一个很长的URL列表,我的应用程序使用这些URL从服务器检索数据。目前,每个url都有自己的常量,即: // constants.h extern NSString * const profileUrl; // constants.m NSString * const profileUrl = @"http://api.site.com/profile"; . . 这没什么大不了的,但是如果我想更改基本url,我必须手动替换每个常量中的所有url。如果可以的话,我想保持干巴巴的哲学(不要

我有一个很长的URL列表,我的应用程序使用这些URL从服务器检索数据。目前,每个url都有自己的常量,即:

// constants.h
extern NSString * const profileUrl;

// constants.m
NSString * const profileUrl = @"http://api.site.com/profile";
.
.
这没什么大不了的,但是如果我想更改基本url,我必须手动替换每个常量中的所有url。如果可以的话,我想保持干巴巴的哲学(不要重复你自己)。就像我在下面所做的一样

// 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"];
如果是的话,有没有一种标准的方式来有序地处理你的应用程序URL?在这种情况下,您使用哪些技巧可以使您的生活更轻松?

只需使用:

NSDictionary *profileURLS = [NSDictionary dictionaryWithValues:[NSArray yourArrayOfProfileURLS] forKeys:[NSArray yourArrayOfCorrespondingProfiles]];

NSString *baseURL = @"baseURLHere";
NSString *newURL = [baseURL stringByAppeningString:[profileURLS valueForKey: profileName]];

如果我正确理解您的意思,我认为这应该适用于您正在做的事情

我在MyAppDelegate中保留了一个基本url:

在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"];

我把它们保存在一个字符串文件中。这样一来,如果本地化应用程序的URL不同,就很容易适应资源本地化

最简单的方法是使用宏:

#define FOOBAR_BASE @"http://www.example.com/"
#define FOOBAR_API_BAZ FOOBAR_BASE "baz"
您甚至可以使用
NSString*constbarurl=FOOBAR_BASE“baz”来实现这一点

如果您有一个“服务器”,这是很好的。当你有多台服务器,你想从同一个应用程序中访问而不需要重新编译(开发/生产?)时,它会变得更混乱


在我们这样做的一个应用程序中,我们只有一个巨大的头文件,它比遗留在继承的代码库中随处可见的文字字符串要好得多…

好吧,不是不同的语言本身。假设你的应用程序在日本和美国使用,它列出了一些关注该国政治的人们感兴趣的网站。让日本民众看到美国政治机构的名单没有任何意义。这不是一个很好的例子,但我的想法是这些网站可能不一定有相同的内容。我会根据国家(使用CoreLocation/IP address/MCC:MNC检测)列出这个列表,可能有一个用户可选择的覆盖。这意味着您不需要根据语言猜测位置,也不需要对许多英语国家(或法语/西班牙语/葡萄牙语)进行单独的“本地化”。而且,由于您仍然需要web访问,您可以将列表设置为服务器端,这样您就不需要更新应用程序来更改列表。(还要注意,NSLocale(“Region Format”)可能是检测用户所在国家的更好方法。)这似乎是针对我的情况最优雅的解决方案。非常感谢你!