我想在我的应用中定义基本网址:
#define kBaseURL @"http://mydomain.com/"
并且还可以使用此作为基础创建其他URL
#define kProductsURL @"/products"
我知道我可以这样做:
NSString *urlString = [NSString stringWithFormat:@"%@%@", kBaseURL,kProductsURL];
如何更改kProductsURL
我只能使用kProductsURL
进行字符串格式化?
我知道你可以用#define
语句做很多事,但我找不到好的教程或文档。
有人能指出我正确的方向吗?
答案 0 :(得分:3)
您可以简单地将#define
连接起来,如下所示:
#define kBaseURL @"http://mydomain.com"
#define kProductsURL kBaseURL@"/products"
// kProductsURL becomes http://mydomain.com/products
修改:以其他答案和评论为基础......
但是some developers考虑使用#define
作为代码气味。另一种方法是使用const
s。这比使用#define
更有优势,因为当您编辑const
的内容时,它不需要编译整个项目。
URLs.h
档案:
extern NSString * const kBaseURL;
extern NSString * const kProductsPath;
NSString *GenerateMyURL(NSString *path);
URLs.m
档案:
NSString * const kBaseURL = @"http://mydomain.com";
NSString * const kProductsPath = @"/products";
NSString * GenerateMyURL(NSString *path)
{
return [kBaseURL stringByAppendingPathComponent:path];
}
用法:
NSString *productsURL = GenerateMyURL(kProductsPath);
// Do whatever...
答案 1 :(得分:1)
您可以这样做:
#define kBaseURL(extension) [NSString stringWithFormat:@"http://mydomain.com/%@", extension]
并在您的代码中使用下一步:
NSString *urlString = kBaseURL(kProductsURL);
// urlString becomes http://mydomain.com/products
++