0

我注意到从 iOS 应用程序中保存文件时,使用
writeToFile:myFile atomically:YES

生成的文件实际上是以 XML 格式保存的,并且始终具有以下代码:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <string>Sentence 1</string>
    <string>Sentence 2</string>
    <string>Sentence 3</string>
    <string>Sentence 4</string>
</array>
</plist>

所以它总是采用 XML/Plist 格式。

但是,如果我尝试将不是从iOS 应用程序中创建的文本文件导入应用程序 - 它似乎不知道如何识别它。

例如,如果我将在 TextEdit 中创建的纯文本文件拖到我的应用程序的 Documents 文件夹中,然后再次运行应用程序,应用程序会看到这个新文件,但是当我尝试使用以下方法加载其内容时: initWithContentsOfFile:myFile
我得到的结果是:(null)

这是因为在 TextEdit 中创建的文件的默认格式是“.rtf”吗?或者我应该使用完全不同的方法将纯文本文件读入应用程序而不是 initWithContentsOfFile:myFile

最终,我希望该应用程序能够加载现有的文本文件——甚至可能是 Microsoft WORD 文件——并使用它们。我希望用户将他们现有的文件拖到 iTunes 中的应用程序文件夹中,然后将他们的设备与 iTunes 同步 - 然后将这些新文件复制到设备上,当他们再次运行他们的应用程序时,应用程序将看到新文件并能够打开它们并读取它们的内容。

有什么建议么?

4

1 回答 1

1

你已经提到了这个writeToFile:atomically:方法,但是你没有告诉我们这个方法是在哪个类上被调用的。例如,NSString,NSArrayNSDictionary其他类有一个具有此名称的方法,并且它们的行为都不同,正如在不同类型的数据结构中所期望的那样。

从上面的文件输出中,看起来您可能正在调用它,NSArray这就是它以 Plist 格式编写的原因。我向您保证,如果您使用 ,字符串会被清楚地写入NSString,例如:

NSString *s = @"A string";
[s writeToFile:path atomically:YES];

将产生一个文件:

A String

在将其写入文件之前,您可能希望将各种其他数据结构转换为字符串。

于 2013-08-07T00:11:39.503 回答