gpt4 book ai didi

objective-c - 您可以为plist文件定义自定义枚举类型吗?

转载 作者:行者123 更新时间:2023-12-01 16:54:41 25 4
gpt4 key购买 nike

我已经定义了一个枚举,用于设置配置信息。让我们称之为枚举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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com