我想将我的应用程序的皮肤设置存储在json文件中。我如何存储颜色/样式等的枚举值,然后从字符串中转换回来?我如何存储MKPinAnnotationColorRed或UITableViewStyleGrouped?
如果只是存储等价整数的问题,我就可以了,而不是实际存储枚举字符串值。
答案 0 :(得分:3)
“我想将我的应用程序皮肤设置存储在json文件中” - 这是iPhone上的错误方法。操作系统提供了NSUserDefaults
类,可以为您处理所有细节。
例如,要存储枚举值(实际上是整数值):
[[NSUserDefaults standardUserDefaults] setInteger: annotationColor
forKey: @"SomeKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
您还可以轻松存储和检索序列化对象或本机类型(数组,字母,数字,字符串)。
答案 1 :(得分:3)
简短的回答是,你不能。
除非你做了几件事之一:
答案 2 :(得分:2)
您必须在枚举和字符串之间创建一些显式映射。一种方法如下:
#define ENTRY(x) [NSNumber numberWithInt:x], @#x
NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
ENTRY(enumOne),
ENTRY(enumTwo),
ENTRY(enumThree),
nil];
#undef ENTRY
NSNumber* index = [dict objectForKey:@"enumOne"]);
请注意,这是一般方法,如果您具有等距的枚举值,则不必存储其数值并且可以使用例如改为NSArray
。