NSURLとNSStringは似てるようで違うらしい。ちょっとはまったのでメモ。
NSURLを作成するときによく使うURLWithStringでローカルファイルを取得しようとすると以下のようになる。
NSURL *url = [NSURL URLWithString:[NSHomeDirectory() stringByAppendingString:@"/Documents/test.txt"]];
ちなみにAVFoundationで動画を録画しようとしていたので、このURLを使ってローカルファイルにアクセスしようとするとこのようになる。
[movieFileOutput startRecordingToOutputFileURL:url recordingDelegate:self];
でもこれではうまくいかないらしい。このURLは以下のようになっている。
/var/mobile/Applications/hogehoge/Documents/test.txt
でもこれではそもそもURLとしてなりたっていないので、ファイルが見つからんといわれる。これをfileプロトコルでURLとして使うようにできるのがfileURLWithPathだ。
NSURL *url = [NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingString:@"/Documents/test.txt"]];
以下のようになる。
file://localhost/var/mobile/Applications/hogehoge/Documents/test.txt