1

pathForResourceを使用したいのですが、パスが存在しない場合はパスが作成されないようです。したがって、次のようにして手動で作成しようとしています。

 NSString *path = [NSString stringWithFormat:@"%@/%@.plist",[[NSBundle mainBundle] bundlePath],@"myFileName"];

私は動的にファイルを作成しているのでBuild and Run、アプリケーションを入手した後でそれらにアクセスする必要があります。ただし、プロジェクトは一意のIDフォルダーに配置されるため、パスは次のようになります。

/Users/RyanJM/Library/Application Support/iPhone Simulator/3.0/Applications/80986747-37FD-49F3-9BA8-41A42AF7A4CB/MyApp.app/myFileName.plist

しかし、その一意のIDは、ビルドを実行するたびに変更されます。毎回(シミュレーターでも)到達できるパスを作成する適切な方法は何ですか?

ありがとう。

更新:質問を編集しました。将来、質問に出くわした人を助けることができれば幸いです。

更新:IWasRobbedは、パスURLを作成する適切な方法に回答しました。しかし、私が見つけた最良の答えは、ブラッドパークスからです。しかし、もっとクリーンな方法があったらいいのにと思います。

4

1 に答える 1

1

質問の言い方で、ビルド前にバンドルに含まれている plist を読む方法は次のとおりです。

NSString *propertyListPath = [[NSBundle mainBundle] pathForResource:SomeString ofType:@"plist"];

ビルド後に作成するファイルの一意のストレージ領域として各アプリが持つディレクトリにアクセスする場合は、次を使用します。

#define kFilename   @”data.plist”

- (NSString *)dataFilePath { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; 

return [documentsDirectory stringByAppendingPathComponent:kFilename];
}

次に、それを確認して、ここでデータ処理を行うことができます。

NSString *filePath = [self dataFilePath]; 

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
// do something with data here
}

Beginning iPhone 3 Development彼がデータの永続性について説明している第 11 章 (この例の出典) を特に購入/読むと、多くのトラブルを回避できます。それは素晴らしい本です。

于 2010-06-23T23:16:11.950 に答える