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

ios, nsstring, objective-c

Solution

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;

Problem

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?

Original source

Related problems