3

アプリケーションのディレクトリ(.appと同じフォルダ)にあるファイルを取得して、その絶対パスを取得するにはどうすればよいですか。相対パスが「Data/file.txt」であるとすると、Objective Cを使用してそれを絶対パスとして取得するにはどうすればよいですか?それが助けになるなら、私はユーザーに彼らのホームフォルダ名を入力してもらいます。

助けてください、

HiGuy

4

3 に答える 3

14

NSURL次のように、URL を解決するメソッドを使用します。

NSURL * bundle = [[NSBundle mainBundle] bundleURL];
NSURL * file = [NSURL URLWithString:@"../Data/file.txt" relativeToURL:bundle];
NSURL * absoluteFile = [file absoluteURL];

「../」が必要です。そうしないと、アプリ バンドルのファイルを見つけようとするからです。事前に「../」を配置すると、バンドル自体ではなく、バンドルを含むフォルダーを調べるように指示されます。また、-[NSBundle bundleURL]は 10.6 以降の API ですが、NSURL便利なメソッドとを使用して機能を複製するのは簡単-[NSBundle bundlePath]です。

于 2010-01-23T16:32:21.333 に答える
2

次の手順を実行して、実行中のアプリの場所を見つけます。

NSString * applicationPath = [[NSBundle mainBundle] bundlePath];

これは次のようなものを返します:

/Users/myUser/Library/Application Support/iPhone Simulator/User/Applications/317CF5C7-57B3-42CE-8DF4-4DD10B070D95/Assignment1a.app

次に、を使用- (NSString *)stringByDeletingLastPathComponentして最後のビットを切り取ります。

于 2010-01-23T16:16:21.507 に答える
1

アプリのルートフォルダーを相対パスで連結できるはずです。NSHomeDirectory()を使用してアプリのホームディレクトリにアクセスできるため、絶対パスを取得するには、次のようにします。

NSString *path = [NSHomeDirectory() stringByAppendingString: @"/Data/file.txt"];
于 2010-01-23T16:11:05.863 に答える