我在哪里可以存储我的网络服务器URL?

时间:2013-05-25 22:20:23

标签: ios objective-c global-variables

我在我的移动应用中对所有网址进行硬编码,我知道这不是一个好主意。例如,如果我需要移动域名,我需要在每个页面上将应用程序中的所有URL从www.oldname.com重命名为www.newname.com。

我不确定在何处以及如何存储它们,以便我可以在单个页面上修改此信息并在所有页面上自动更改。

在PHP中,我创建了一个包含所有页面中包含的变量的文件。我不确定这是如何在objective-c中完成的。你是怎么做到的?

5 个答案:

答案 0 :(得分:3)

您可以创建一个常量文件,并将其包含在列出URL的所有其他文件中。

创建一个文件,例如constants.h你放置所有的常数。 在constants.h中你可以这样写:

#define kApiBaseUrl @"https://myapi.mydomain.com"

在您的其他文件中,您可以像以下示例一样访问它:

NSURL *url = [NSURL URLWithString:kApiBaseUrl];

这可能就像你在PHP中用过的那样。 您还可以在应用的PLIST中设置预定义的URL,但这可能更容易。

答案 1 :(得分:2)

类似于edwardmp的响应,您还可以创建一个Constants.h文件并定义一些静态常量字符串。

static NSString *const kSiteRootURL = @"http://www.someurl.com";

答案 2 :(得分:1)

检查项目中的“支持文件”文件夹,你应该有一个名为“nameOfYourApp-Prefix.pch”的文件,然后你可以定义例子的根URL

#define ROOT_URL    @"yourwebsite.com"

您可以从项目的任何位置访问ROOT_URL

答案 3 :(得分:1)

您可以将网址保存在属性列表文件中(File => New file => Property ...)。你会有类似“config.plist”的东西。与其他属性文件类似,它是key =>值文件,其中值可以是字符串,数组等。

使用NSBundle在您的应用中加载文件,例如

NSString *path = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSDictionary *config = [[NSDictionary alloc] initWithContentsOfFile:path];

如果您对网址进行任何更改,则无需重新编译代码即可获益。

答案 4 :(得分:0)

您可以将NSString添加到.pch文件中,以包含在所有模块中。