ファイルパスをNSStringからNSURLへ変換する際のありがちな修正ミス

Pocket

最初に正解を書くとNSStringのファイルパスからNSURLを正しく生成するのは以下のコードです。

よく間違えやすいのが


で、これだと日本語が正しくエスケープ出来ずに引っかかってしまいます。 
そこでよく解決策として見かけるのが


というエスケープ処理を施したコードで、確かにNSURLは生成されるのですがイザ実際に動かそうとすると


で、dateはnilが入っているのにerrorはnilのまま, resultもYESが返ってきて正常に動いてる挙動で期待したものが取れていないという厄介な状況に陥ります。これは上記の方法で生成したNSURLはfileスキームが入っていない事が原因と考えられます。

解決方法としては記事の冒頭の通り「fileURLWithPath」でNSURLを取得することで、この場合エスケープは内部で処理されるため、自前で書く必要はありません。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です