2

自分のディレクトリツリーを作成し、アプリケーションからアクセスする方法を理解しようとしています。

私はある種の学習プログラムを実行していて、次のようなディレクトリ構造を作成したいと考えています。

-MyLessonsDirectory
--LessonDirectory_1
---Step_1
---Step_2
---Step_3
--LessonDirectory_2
---Step_1
---Step_2
---Step_3
.
.
and so on

各「ステップ」ディレクトリには、レッスンのそのステップに固有のコンテンツがあります。コンテンツは開発中に私が追加したものです。したがって、アプリケーション内から構造とコンテンツを作成するのではなく、それにアクセスしてディレクトリのコンテンツを読み取るだけです。このような構造を作成して使用できれば、アプリで新しいレッスンを簡単に作成できる優れたデザインを簡単に作成できます。

私が理解できないのは、xCodeのファイル構造のどこにそれらのディレクトリを作成する必要があるか、そしてアプリケーションからそれらのディレクトリへのパスは何であるかです。

4

2 に答える 2

2

ディレクトリを作成するために NSFileManager を確認します。

NSFileManager *fm = [NSFileManager defaultManager];
NSError *error;
BOOL result = [fm createDirectoryAtPath:@"path....." withIntermediateDirectories:YES attributes:nil error:&error];
if(result){
   NSLog(@"success!");
} else {
   NSLog(@"error: %@",error);
}

ディレクトリを作成する場所に関しては、 ~/Application Support/--アプリの名前-- ユーザーがアクセスする必要がない場合、アプリのデータを保存する場所に配置できます。それ以外の場合は、ユーザーに保存場所を決定させる必要があります。

- (NSString *)applicationSupportDirectory {

       NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
       NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : NSTemporaryDirectory();
       return [basePath stringByAppendingPathComponent:@"MyApplication"];
}
于 2010-02-23T17:35:54.173 に答える
1

iPhone では、アプリ独自のディレクトリにしかアクセスできません。app ディレクトリの Documents フォルダに練習用ディレクトリを配置するのに最適な場所です。

これ...

NSString *dp=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

...は、NSFileManagerに渡すことができるディレクトリフォルダーへのパスを提供します。

ディレクトリ構造を視覚的に確認したい場合は、シミュレーターでアプリを実行して調べてください。

~/Library/Application Support/iPhone Simulator/User/Applications

アプリは、意味不明な UUID 名を持つフォルダーの 1 つになります。そこにあるディレクトリとファイルを Finder で見ることができます。

iPhone には、実際に必要なディレクトリのほとんどが既に含まれていることを付け加えておきます。設定、キャッシュ、tmp、ドキュメントなどがすべて揃っています。

Edit01:

私がやりたいことは、アプリケーションを起動する前にコンテンツを手動で追加することです。次に、アプリケーション内から、アプリケーションを開始する前に追加したコンテンツを読み取ります。

デフォルトのディレクトリ構造を変更することはできず、アプリケーションまたはそのディレクトリのインストール方法をまったく制御できません。iPhone アプリには、いかなる種類の外部サポート ファイルもありません。すべてがアプリ バンドル内にあります。

ただし、アプリ バンドルは実際には単なるディレクトリであるため、アプリを最初に実行するときに、その中に何かを詰め込んで、既定のディレクトリの 1 つにコピーすることができます。ドキュメント ディレクトリには、何でも書き込むことができます。

于 2010-02-23T18:43:22.300 に答える