Objective-C: how to group a series of string constants?

╄→尐↘猪︶ㄣ 提交于 2019-12-18 04:03:53

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!