Objective-C:如何对一系列字符串常量进行分组?

时间:2012-04-25 09:28:33

标签: objective-c ios nsstring

我以宏的方式定义了一系列字符串常量,如下所示

#define EXT_RESULT_APPID  @"appid"
#define EXT_RESULT_ERROR_CODE  @"errorcode"
#define EXT_RESULT_PROGRESS  @"progress"
...

所有这些常量应该在相同的上下文中使用,所以我想在同一个命名空间中约束它们,我不想让它们全局,就像这个post说。

另一方面,我可以将所有数字常量放在枚举中,但它不适用于字符串。 那我怎么能把这些相关的字符串常量分组呢?

4 个答案:

答案 0 :(得分:28)

这是一种方法:

<强> MONExtResult.h

// add __unsafe_unretained if compiling for ARC
struct MONExtResultStruct {
    NSString * const AppID;
    NSString * const ErrorCode;
    NSString * const Progress;
};

extern const struct MONExtResultStruct MONExtResult;

<强> MONExtResult.m

const struct MONExtResultStruct MONExtResult = {
    .AppID = @"appid",
    .ErrorCode = @"errorcode",
    .Progress = @"progress"
};

使用中:

NSString * str = MONExtResult.AppID;

答案 1 :(得分:0)

创建一个头文件,您可以在其中声明字符串并在需要时导入

答案 2 :(得分:0)

您可以创建一个头文件名&#34; Constants.h&#34;。然后,您需要将此头文件导入到要使用这些常量的位置:

#import "Constants.h"

答案 3 :(得分:0)

创建一个标题文件Constants.h

在此文件中添加所有常量。这些可以是您希望在项目的不同类中使用的常量。

#define EXT_RESULT_APPID  @"appid"
#define EXT_RESULT_ERROR_CODE  @"errorcode"
#define EXT_RESULT_PROGRESS  @"progress"

现在,不是在每个类中导入此Constants.h,而是转到<project name>-Prefix.pch文件并在此处导入文件。

#import "SCConstants.h"

现在,您可以轻松地在项目的任何类中使用常量。