问题
I defined a series of string constants like below, in macro way,
#define EXT_RESULT_APPID @"appid"
#define EXT_RESULT_ERROR_CODE @"errorcode"
#define EXT_RESULT_PROGRESS @"progress"
...
All these constants are supposed to be used in same context, so I'd like to constraint them in a same namespace, and I don't want to make them global, just like what this post said.
In the other hand, I could put all numeric constants in an enum but it doesn't work for strings. Then how could I group these related string constants?
回答1:
Here's one approach:
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"
};
In use:
NSString * str = MONExtResult.AppID;
回答2:
Create a header file where you declare your strings and import it when needed
回答3:
You may create a header file name "Constants.h". Then you need to import this header file where you want to use these constants like:
#import "Constants.h"
回答4:
Create a header file say Constants.h
Add all constants in this file. These can be constants that you would like to use in deferent classes of your project.
#define EXT_RESULT_APPID @"appid"
#define EXT_RESULT_ERROR_CODE @"errorcode"
#define EXT_RESULT_PROGRESS @"progress"
Now, instead of importing this Constants.h in every class, goto <project name>-Prefix.pch file and import the File here.
#import "SCConstants.h"
now you can use the Constants in any class of the project to your ease.
来源:https://stackoverflow.com/questions/10312874/objective-c-how-to-group-a-series-of-string-constants