Swift 3(NSURLは忘れてください)。
let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"
文字列からURLを作成するには:
let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath
ファイル名を追加したい場合。appendingPathComponent()はパーセントエンコーディングを自動的に追加することに注意してください:
let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47
Stringを使用したいがルート部分は使用しない場合(パーセントエンコーディングは自動的に削除されることに注意してください):
let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017 22:47"
ルート部分を保持したい場合は、次のようにします(ただし、パーセントエンコードに注意してください-削除されません)。
let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"
文字列のパーセントエンコーディングを手動で追加するには:
let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017%2022:47"
パーセントエンコーディングを削除するには:
let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"
ネットワークリクエストのURLはパーセントエンコーディングを必要とするため、パーセントエンコーディングは重要ですが、ファイルシステムへのURLは常に機能するとは限りません。これは、パーセントエンコーディングを使用する実際の方法によって異なります。ここでの注意点は、自動的に削除または追加される可能性があるため、これらの変換を慎重にデバッグすることです。