Импорт текстовых файлов в приложение iOS

Я заметил, что при сохранении файла из приложения 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, и перетащу его в папку "Мои документы" приложения, а затем снова запустите приложение, приложение увидит этот новый файл, но при попытке загрузить его содержимое, используя: initWithContentsOfFile:myFile
результат, который я получаю: (null)

Это потому, что формат файлов по умолчанию, созданных в TextEdit, - ".rtf"? Или я должен использовать совершенно другой метод для чтения текстовых файлов в приложение, кроме initWithContentsOfFile:myFile?

В конечном итоге мне бы хотелось, чтобы приложение могло загружать существующие текстовые файлы - возможно, даже файлы Microsoft WORD - и работать с ними. Я бы хотел, чтобы пользователь перетащил свои существующие файлы в папку приложения в iTunes, а затем синхронизировал свое устройство с iTunes, после чего эти новые файлы будут скопированы на устройство, и когда они снова запустят свое приложение, приложение увидит новые файлы и сможете открывать их и читать их содержимое.

Какие-либо предложения?

1 ответ

Решение

Вы упомянули writeToFile:atomically: метод, но вы не сказали нам, к какому классу вызывается этот метод. Например, NSString, NSArray, NSDictionary и другие классы имеют метод с этим именем, и все они ведут себя по-разному, как и следовало ожидать, учитывая различные типы структур данных.

Из приведенного выше вывода файла, похоже, что вы, вероятно, вызываете это на NSArray вот почему он написан в формате Plist. Уверяю вас, строки пишутся просто, если вы используете NSStringНапример:

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

создаст файл с:

A String

Возможно, вы захотите преобразовать различные другие структуры данных в строку, прежде чем записать ее в файл.

Другие вопросы по тегам