在 iPhone 项目中加载数据文件

Posted

技术标签:

【中文标题】在 iPhone 项目中加载数据文件【英文标题】:Loading data files in iPhone project 【发布时间】:2008-11-26 18:10:02 【问题描述】:

如何在 iPhone 项目中读取数据文件?例如,假设我有一个名为“level.dat”的静态文件,其结构如下: 障碍物:10 时间:100 障碍1:10,20 ...

我想将文件的内容读入 NSString 然后进行解析。如何将文件的内容读入字符串?此外,“level.dat”文件应位于项目的哪个位置?它应该在“资源”下还是仅在主目录中?

提前致谢!

【问题讨论】:

【参考方案1】:

请参阅此答案:How to fopen() on the iPhone?,它显示了如何访问捆绑包中的资源。获得路径后,只需使用 [NSString stringWithContentsOfFile:encoding:error:]。

NSString   *path = [[NSBundle mainBundle] pathForResource: @"level" ofType: @"dat"]
NSError    *error = nil;
NSString   *data = [NSString stringWithContentsOfFile: path 
                                             encoding: NSUTF8StringEncoding 
                                                error: &error];

【讨论】:

【参考方案2】:

虽然这不是您要求的,但请考虑将您的文件转换为 plist。您必须将它们重新格式化为 XML,然后您可以将它们直接加载到 NSDictionary 中:

dict = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"levels" ofType:@"plist"]];

【讨论】:

请注意,您可以对数组做同样的事情,很可能他的数据可能更适合***数组而不是字典。【参考方案3】:

您是否考虑将数据放入 SQLite 数据库而不是平面文件?我发现这个 API 在 iPhone 上非常好用。

这就是我现在在手机上存储所有数据的方式。

【讨论】:

【参考方案4】:

如果您在解析数据字符串时需要帮助,Cocoa For Scientist 上有一篇有用的文章

【讨论】:

以上是关于在 iPhone 项目中加载数据文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在R中加载和处理非常大的数据文件[关闭]

如何仅从 plist 文件中加载选定的数据

在android中加载和保存数据文件

无法在捆绑基础国际化中加载 nib

如何在反应中从文件中加载数据?

如何在 Cordova 插件中加载数据文件?