【问题标题】:Where can I store my webserver URLs?我可以在哪里存储我的网络服务器 URL?
【发布时间】:2013-05-25 22:20:22
【问题描述】:
我在我的移动应用程序中对所有 URL 进行硬编码,我知道这不是一个好主意。例如,如果我需要移动域名,我需要在每个页面上将应用程序中的所有 URL 从 www.oldname.com 重命名为 www.newname.com。
我不确定将它们存储在何处以及如何存储它们,以便我可以在单个页面上修改此信息并使其在所有页面中自动更改。
在 PHP 中,我会创建一个包含变量的单个文件,这些变量会包含在所有页面中。但是,我不确定这是如何在 Objective-c 中完成的。你是怎么做到的?
【问题讨论】:
标签:
ios
objective-c
global-variables
【解决方案1】:
您可以创建一个常量文件并将其包含在列出 URL 的所有其他文件中。
创建一个文件,例如constants.h 放置所有常量的地方。
在 constants.h 中你可以这样写:
#define kApiBaseUrl @"https://myapi.mydomain.com"
在您的其他文件中,您可以像以下示例一样访问它:
NSURL *url = [NSURL URLWithString:kApiBaseUrl];
这可能就像您在 PHP 中所做的那样。
您还可以在应用的 PLIST 中设置预定义的 URL,但这可能更容易。
【解决方案2】:
类似edwardmp的响应,也可以创建一个Constants.h文件,定义一些静态常量字符串。
static NSString *const kSiteRootURL = @"http://www.someurl.com";
【解决方案3】:
检查项目中的“Supporting Files”文件夹,您应该有一个名为“nameOfYourApp-Prefix.pch”的文件,然后您可以定义根URL作为示例
#define ROOT_URL @"yourwebsite.com"
您可以从项目中的任何位置访问 ROOT_URL
【解决方案4】:
您可以将 URL 保存在属性列表文件中(文件 => 新文件 => 属性 ...)。你会有类似“config.plist”的东西。与其他属性文件类似,它是 key => value 文件,其中 value 可以是字符串、数组等。
使用 NSBundle 在你的应用中加载文件,比如
NSString *path = [[NSBundle mainBundle] pathForResource:@"config" ofType:@"plist"];
NSDictionary *config = [[NSDictionary alloc] initWithContentsOfFile:path];
这将带来一个好处,即您在对 URL 进行任何更改时都不必重新编译代码。
【解决方案5】:
您可以将 NSString 添加到您的 .pch 文件中以包含在所有模块中。