LoginSignup
3
5

More than 5 years have passed since last update.

iOSアプリのディレクトリに保存したファイルへのアクセス

Posted at

はじめに

はじめまして!!
今までiOS開発未経験でしたが、11月にアプリ開発をする企業に転職してきました。転職後1ヶ月半ほどObjective-Cの研修をした中で私がミスしたことを書いてみます。
iOS開発を始めたばかりの方が同じ問題にぶつかった際に参考になれば幸いです。

本題はこっち

まず、私がやろうとしたことは次の1,2,3です。


1.URLからzipファイルを取得してアプリ内のディレクトリに保存
2.保存したzipファイルを解凍して、同じディレクトリに保存
3.解凍したファイルの中にあるxmlファイルをNSURLで指定して、NSXMLParserでparseする


1と2に関してはすぐに実装できました(^ω^)/
ですが、3の処理ができない(T^T)。。。

ということで、
アプリ内のファイルをNSURLでpath指定してアクセスする部分を書いていきます!!
(1と2に関しては今回は触れませんが、今度備忘録的なモノを残そうかなーと思っております。)

まずは、しくじったコードから。

FileAccess.m

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

//アプリ内のDocumentsディレクトリのpath
NSString *documentDirectory = paths[0]; 

//Documentsディレクトリ内のhoge.xmlのpath
NSString* xmlFilePath = [documentDirectory stringByAppendingPathComponent:@"hoge.xml"];

NSURL* url = [NSURL URLWithString:documentDirectory];

NSXMLParser* parser = [[NSXMLParser alloc] initWithContentsOfURL:url];

はい、失敗です(-o-)
parseできませんでした。

間違っていた部分はここです↓↓

NSURL* url = [NSURL URLWithString:documentDirectory];

まさかこいつのせいだとは思いませんでした。
正しくは、こちら↓↓

NSURL* url = [NSURL fileURLWithPath:xmlFilePath];

うん、ちゃんとfileURLWithPath:って書いてあるやん(^^;)
NSURL Class Referenceさらっと読んでみましたが、詳細な内容やら補足が必要な場合はまた今度追記します。

まとめ

ファイルにアクセスしたいときは

NSString* path = @"ファイルのパス";
NSURL* url = [NSURL URLWithString:path];

ではなく、


NSString* path = @"ファイルのパス";
NSURL* url = [NSURL fileURLWithPath:path];

でファイルのpathを指定してNSURLを生成する
ということでした(^ω^)

最後に

今回、初めてQiiraに投稿しました。
iOS開発に関してまだまだ基礎の勉強中なので、誤りがありましたら、ご指摘下さい。
また、こうした方が良いよ。などアドバイス頂けたらとても嬉しいです。

ご覧いただきありがとうございました!!

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5