将文本文件导入iOS应用程序

时间:2013-08-06 23:56:14

标签: iphone objective-c import sync initwithcontentsoffile

我注意到使用以下内容从 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中创建的纯文本文件并将其拖到我的App的Documents文件夹中,然后再次运行App,App 会看到这个新文件,但是当我尝试加载其内容使用: initWithContentsOfFile:myFile
我得到的结果是:(null)

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您已经提到了writeToFile:atomically:方法但是您没有告诉我们这个方法被调用了什么类。例如,NSStringNSArrayNSDictionary和其他类都有一个具有此名称的方法,并且它们的行为方式与预期的不同类型的数据结构不同。

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

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

将生成一个文件:

A String

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