Импорт текстовых файлов в приложение 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
Возможно, вы захотите преобразовать различные другие структуры данных в строку, прежде чем записать ее в файл.