纯文本文件作为配置文件在iOS中只有几个值的缺点是什么



为什么使用plists和xml文件?如果我只想存储几个值,是否可以使用纯文本文件,或者这是否违背了Objective-C的最佳实践?

-------编辑-------

我不确定这是否应该放在单独的帖子中,所以我就把它放在这里......

如果我正在制作一个应用程序,用户可以在其中设计纸杯蛋糕并将其保存为他们的喜好(颜色、风味、大小),我应该使用哪种方法。我想我的用户不会做出数百个设计,但有些人将不可避免地做出大量设计。

我会

说这很好,但考虑到他们使阅读 plist 文件变得多么容易,我的问题是为什么要打扰?

plist 常用的主要原因是因为本机 API 可以轻松处理这些。您可以使用一个命令直接从 plist 加载 NSArray/NSDictionary。

当您将要多次出现类似数据时,将使用 SQL 数据库。例如,如果您需要记录社交应用的联系人,则可以使用可能包含ID,姓名,年龄,性别,电话号码,电子邮件等的数据库。

除此之外,还有自定义二进制格式,但这些格式专门用于正在处理的任何项目。根据您需要完成的操作,文本文件可能适合您,但可能会有更好的答案。使用文本文件没有错,但这些并不常用,因为您必须编写自己的方法来解析它们。真的,我需要更多地了解您将存储哪种类型的数据,然后才能告诉您哪个选项是最好的。

回答编辑的编辑:

为此,最好的办法是使用 SQL 数据库,因为每个纸杯蛋糕都有各种属性,例如名称、使用的蛋糕混合物类型、糖霜类型、糖霜颜色、洒是/否等。这对于 SQL 数据库来说是完美的,因为 dbs 已命名为列(即"名称"、"mixType"等),并且表中的每一行对于这些列中的每一列都有不同的值。

这也可以用 plist 来实现,但它不会那么高效,并且它会使用更多的磁盘空间(尽管如果你只是将其用于纸杯蛋糕,则不会太多)。我假设你有一个纸杯蛋糕类,所以你可以实现一个这样的加载函数:

+(id)cupcakeWithContentsOfFile:(NSString*)file {
    if((self = [super init])) {
        NSDictionary* plist = [NSDictionary dictionaryWithContentsOfFile:file];
        self.flavor = [plist objectForKey:@"flavor"];
        // Etc.
    }
    return self;
}

这是一个有趣的问题。 我实际上有一个应用程序,它确实使用简单的文本文件来存储该应用程序使用的数据。 因为原始代码来自Windows/mac程序,并且我想保持数据文件的一致性,所以Windows不提供pfile类型操作。 我在Windows上编写了所有代码以在文件中读取,并且由于它都是ANSI-C,因此可以很好地传输到MacOS X。

当涉及到将其移植到iPhone和iPad时,移植代码仍然同样容易,然后不仅将数据文件重写为PList格式,而且将PList读取代码重写。

对于我从头开始的所有不受窗口约束的应用程序,我使用了PLists。

这实际上是一个我反复讨论的问题。 PList和/或XML读取和处理的性能肯定不会像设计良好的文本文件格式那样高,因为两者都由于所有不必要的多余标签而变得臃肿。 如果您正在尝试开发具有多种数据类型的单个数据文件,那么这可能是更简单的方法,但是如果您正在寻找更少的数据大小,并且可能更快的执行速度,那么格式化您自己的文件可能会好得多。 我知道这不是一个明确的答案。

所以最后,这不是一个"最佳实践"之类的东西,而是一个偏好类型的东西。

最新更新