2016-05-04 4 views
2

私は、ユーザーがファイルマネージャを使用してディレクトリとファイルを作成、変更、削除できるアプリケーションを持っています。私は、外部アプリケーションからファイルをインポートするときに、システムフォルダInboxが自動的に生成され、ユーザがフォルダを削除したり、Inboxという名前のフォルダを作成したりするのを防ぐことができます。代わりに、ドキュメントパスディレクトリにサブディレクトリを作成し、ファイルマネージャがそのフォルダをドキュメントルートパスと見なすべきですか?他のアプリはどのようにこれを達成していますか?ユーザーがフォルダとファイルを管理できるようにするには、ドキュメントディレクトリ内の受信トレイフォルダをどうすればいいですか?

+1

私はそこにベストプラクティスがあるとは思わない。あなたにとって最も理にかなったことをやってください。私は単にInboxを無視し、ファイルのリストを取得するときにそれをフィルタリングします。あなたが提案したようにサブディレクトリを使用することも確かに良い解決策になります。 –

+0

@MattLongうーん。 Appleのファイルシステム設計に疑問をぶつける前に、そのフォルダがドキュメントパスで作成され、最初にアプリケーションユーザーに見えるようにする理由を疑問に思う必要があります。デザイン上の欠陥か、Inboxフォルダを置くことに何らかの利点があることは明らかです。 –

答えて

4

ユーザーがサンドボックスのドキュメントディレクトリ内に独自のドキュメントとディレクトリを作成できるようにする場合は、提案したことを実行してドキュメント内にユーザー編集可能データ用に指定される別のディレクトリを作成するとよいでしょう。

たとえば、ドキュメント内に「User」ディレクトリを追加し、それをユーザーファイルとディレクトリのルートディレクトリとして使用します。

アプリが外部のエンティティで開くように頼まれたファイルにアクセスするには、このディレクトリを使用します。

Appleのドキュメントには、については、次/書類/受信トレイを述べています。具体的には、メールプログラムは、このディレクトリにあなたのアプリに関連付けられている電子メールの添付ファイルを配置します。ドキュメントインタラクションコントローラは、ファイルをその中に配置することもできる。 あなたのアプリはこのディレクトリ内のファイルを読み書きできますが、新しいファイルを作成したり既存のファイルに書き込むことはできません。ユーザーがこのディレクトリ内のファイルを編集しようとすると、アプリケーションは変更を加える前にディレクトリから静かに移動する必要があります。 このディレクトリの内容はiTunesによってバックアップされます。

File System Programming Guideより。

+0

これは妥当な答えですが、最も洗練された解決策ではありません。ドキュメントディレクトリに偽の "chroot"刑務所を作らなければならないと思いますか? –

+0

それはそれについて行く方法の1つだと思います。おそらく、新しいルートディレクトリのパスまたはURLを返す独自の関数を作成し、ドキュメントディレクトリへのパスを返すシステム関数ではなくパス/ urlを取得するコードで使用することもできます。 –

+0

はい、それは私が現在実装しているものです。あなたのご意見ありがとうございます。おそらく、Appleは今後この問題に対処するだろう。ドキュメントを引用するための+1 –

関連する問題