我已经定义了一个枚举,用于设置配置信息。让我们称之为枚举objectTypes
它定义了各种不同的类型,枚举为这些类型定义了易于理解的名称。
我的伙伴编写了设置代码,该代码循环遍历对象数组并设置这些类型值。他使用整数值。
以下是他所做工作的粗略概述:
for (int index = 0; index < [configArray count]; index++)
{
ConfigObject aConfigObject = [configArray objectAtIndex: index];
if (index ==0;
aConfigObject.type = 7;
else if (index == 1)
aConfigObject.type = 5;
else if (index == 2)
aConfigObject.type = 3;
}
(这是伪代码,用于说明我在说什么。)
我不喜欢这样做有几个原因。首先,它很难阅读。 7型到底是什么?其次,如果我以后添加新的枚举类型,或更改枚举的顺序,则会中断。 (用户可见的类型列表以数字顺序显示。)
我将代码更改为:
aConfigObject.type = blueType;
更好,但仍然严格的代码。
我想将此配置信息移到plist文件中,并在启动时阅读。但是,这使我回到了最初的问题。如果将这些值放入plist,则不知道使用自定义枚举类型的方法。我被迫将数值放入我的plist中,这使得代码plist可以读取和维护。
苹果公司在用户遍地使用自定义枚举类型。
是否可以定义新的自定义枚举类型并在最新版本的Xcode(当前使用Xcode 4.5)中教内置的plist编辑器了解这些枚举?那将是一个巨大的进步。我已经做了很多搜索,但是到目前为止还没有找到任何答案。
最佳答案
您可以将配置添加到如下所示的pList文件中:
在启动时阅读该词典,内容如下:
NSString *path = [[NSBundle mainBundle] pathForResource:@"myPlistFileName" ofType:@"plist"];
NSDictionary *myPlist = [NSDictionary dictionaryWithContentsOfFile:path];
NSDictionary *configs = [myPlist objectForKey:@"types"];
现在
configs
将具有您的配置。您现在可以像这样设置类型:aConfigObject.type = [config objectForKey:kBlueType]; // Assuming you have set up your constants for it.
现在关于这个问题:
其次,如果我以后添加新的枚举类型,或更改枚举的顺序,则会中断。
在我看来,您正在使用对象在数组中的位置来确定其类型。
因此,为减少循环的刚性,您可以执行以下操作:
for (NSUInteger index = 0; index < [config count]; index++) {
ConfigObject *aConfigObject = [configArray objectAtIndex: index];
aConfigObject.type = [config objectForKey:[NSString stringWithFormat:@"%d", index]];
}
关于objective-c - 您可以为plist文件定义自定义枚举类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12732765/