Objective c 能否为plist文件定义自定义枚举类型?
我定义了一个枚举,用于设置配置信息。让我们调用枚举对象类型 它定义了各种不同的类型,枚举为这些类型定义了人类可读的名称 我的合作伙伴编写了设置代码,该代码在对象数组中循环并设置这些类型值。他使用整数值 以下是他所做工作的粗略概述:Objective c 能否为plist文件定义自定义枚举类型?,objective-c,ios,xcode,cocoa-touch,plist,Objective C,Ios,Xcode,Cocoa Touch,Plist,我定义了一个枚举,用于设置配置信息。让我们调用枚举对象类型 它定义了各种不同的类型,枚举为这些类型定义了人类可读的名称 我的合作伙伴编写了设置代码,该代码在对象数组中循环并设置这些类型值。他使用整数值 以下是他所做工作的粗略概述: for (int index = 0; index < [configArray count]; index++) { ConfigObject aConfigObject = [configArray objectAtIndex: index]; if
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;
}
更好,但仍然是严格的代码
我想将此配置信息移动到plist文件中,并在启动时读取它。然而,这让我回到了最初的问题。如果我将这些值放入plist,我不知道如何使用自定义枚举类型。我被迫在plist中放入数值,这使得代码plist无法读取和维护
Apple在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"];
在启动时阅读字典,内容如下:
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]];
}
for(整数索引=0;索引<[config count];索引++){
ConfigObject*aConfigObject=[configArray objectAtIndex:index];
aConfigObject.type=[config objectForKey:[NSString stringWithFormat:@“%d”,index]];
}
您可以将配置添加到pList文件,其结构如下:
NSString *path = [[NSBundle mainBundle] pathForResource:@"myPlistFileName" ofType:@"plist"];
NSDictionary *myPlist = [NSDictionary dictionaryWithContentsOfFile:path];
NSDictionary *configs = [myPlist objectForKey:@"types"];
在启动时阅读字典,内容如下:
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]];
}
for(整数索引=0;索引<[config count];索引++){
ConfigObject*aConfigObject=[configArray objectAtIndex:index];
aConfigObject.type=[config objectForKey:[NSString stringWithFormat:@“%d”,index]];
}
你能澄清一下吗?什么因素决定了aConfigObject
对象的类型?目前,您正在使用它在数组中的位置来确定它,但是您能告诉我aConfigObject
的哪个属性是决定其类型的因素吗?您能澄清一下吗?什么因素决定了aConfigObject
对象的类型?目前,您正在使用它在数组中的位置来确定它,但是您能告诉我aConfigObject
的哪个属性是决定其类型的因素吗?您误解了我的问题。我想要一种方法来教内置属性列表编辑器关于新的枚举类型,而不是内置类型。我希望能够创建一个属性列表,并将一个条目声明为新的自定义枚举类型,以便在打开plist文件时,它使用常量名称而不是整数值显示值。我猜有一种方法可以让Xcode在启动时读取定义属性列表编辑器支持的枚举类型的配置文件。您误解了我的要求。我想要一种方法来教内置属性列表编辑器关于新的枚举类型,而不是内置类型。我希望能够创建一个属性列表,并将一个条目声明为新的自定义枚举类型,以便在打开plist文件时,它使用常量名称而不是整数值显示值。我猜有一种方法可以让Xcode在启动时读取定义属性列表编辑器支持的枚举类型的配置文件。