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 で作成したプレーン テキスト ファイルを取得し、それをアプリのドキュメント フォルダーにドラッグしてからアプリを再度実行すると、アプリこの新しいファイルを認識しますが、次を使用してコンテンツを読み込もうとすると、次 initWithContentsOfFile:myFile
のようになります。 :(null)

これは、TextEdit で作成されるファイルの既定の形式が「.rtf」であるためでしょうか。または、まったく別の方法を使用してプレーンテキスト ファイルをアプリに読み込む必要があります initWithContentsOfFile:myFileか?

最終的には、アプリが既存のテキスト ファイル (Microsoft WORD ファイルでさえも) を読み込んで、それらを操作できるようにしたいと考えています。ユーザーが既存のファイルを iTunes のアプリのフォルダーにドラッグしてから、デバイスを iTunes と同期することを希望します。これにより、これらの新しいファイルがデバイスにコピーされ、アプリを再度実行すると、アプリに新しいファイルを開き、それらを開いて内容を読み取ることができます。

助言がありますか?

4

1 に答える 1

1

メソッドについて言及しましたwriteToFile:atomically:が、このメソッドが呼び出されているクラスを教えてくれませんでした。たとえば、NSStringNSArrayNSDictionaryおよびその他のクラスにはこの名前のメソッドがあり、データ構造の種類が異なると予想されるように、それらはすべて異なる動作をします。

上記のファイル出力から、おそらくこれを で呼び出しているように見えます。NSArrayそのため、Plist 形式で書き込まれます。NSStringたとえば、を使用すると、文字列が平易に書き込まれることを保証します。

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

次のファイルが生成されます。

A String

ファイルに書き込む前に、他のさまざまなデータ構造を文字列に変換したい場合があります。

于 2013-08-07T00:11:39.503 に答える