Objective Cの絶対URLを相対URLを変更
-
22-09-2019 - |
質問
どのように私は(同じフォルダに.appがである)、アプリケーションのディレクトリ内のファイルを取り、それは絶対パスですになるだろう。どのように私は絶対パスでそれを得るためのObjective Cを使用する「データ/ file.txtは」相対パスがあると言いますか?それは任意のヘルプである場合、私は、ユーザーが自分のホームフォルダ名を入力しています。
助けてください、
HiGuy
解決
行って、実行中のアプリの場所を検索
NSString * applicationPath = [[NSBundle mainBundle] bundlePath];
以下のようなものを返します。
/Users/myUser/Library/Application Support/iPhone Simulator/User/Applications/317CF5C7-57B3-42CE-8DF4-4DD10B070D95/Assignment1a.app
次に、最後のビットを切り落とすために- (NSString *)stringByDeletingLastPathComponent
を使用します。
他のヒント
私はそうのような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]
を使用して機能を複製するように些細なのです。
あなただけの相対パスで、アプリのルートフォルダを連結することができるはずです。あなたは、あなたが以下のような何かを行うことができ、絶対パスを取得するには、NSHomeDirectory()でアプリのホームディレクトリで取得することができます:
NSString *path = [NSHomeDirectory() stringByAppendingString: @"/Data/file.txt"];
所属していません StackOverflow