Swift 3 (oubliez NSURL).
let fileName = "20-01-2017 22:47"
let folderString = "file:///var/mobile/someLongPath"
Pour créer une URL à partir d'une chaîne:
let folder: URL? = Foundation.URL(string: folderString)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath
Si nous voulons ajouter le nom du fichier. Notez que appendingPathComponent () ajoute automatiquement le pourcentage d'encodage:
let folderWithFilename: URL? = folder?.appendingPathComponent(fileName)
// Optional<URL>
// ▿ some : file:///var/mobile/someLongPath/20-01-2017%2022:47
Lorsque nous voulons avoir String mais sans la partie racine (faites attention que le pourcentage d'encodage est supprimé automatiquement):
let folderWithFilename: String? = folderWithFilename.path
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017 22:47"
Si nous voulons conserver la partie racine, nous le faisons (mais attention au pourcentage d'encodage - il n'est pas supprimé):
let folderWithFilenameAbsoluteString: String? = folderWithFilenameURL.absoluteString
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017%2022:47"
Pour ajouter manuellement le codage en pourcentage d'une chaîne:
let folderWithFilenameAndEncoding: String? = folderWithFilename.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
// ▿ Optional<String>
// - some : "/var/mobile/someLongPath/20-01-2017%2022:47"
Pour supprimer le codage en pourcentage:
let folderWithFilenameAbsoluteStringNoEncodig: String? = folderWithFilenameAbsoluteString.removingPercentEncoding
// ▿ Optional<String>
// - some : "file:///var/mobile/someLongPath/20-01-2017 22:47"
Le codage en pourcentage est important car les URL pour les requêtes réseau en ont besoin, tandis que les URL vers le système de fichiers ne fonctionneront pas toujours - cela dépend de la méthode réelle qui les utilise. La mise en garde ici est qu'ils peuvent être supprimés ou ajoutés automatiquement, il vaut donc mieux déboguer ces conversions avec soin.