स्विफ्ट 3 (एनएसयूआरएल के बारे में भूल जाओ)।
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
जब हम स्ट्रिंग करना चाहते हैं, लेकिन रूट भाग के बिना (ध्यान दें कि प्रतिशत एन्कोडिंग स्वचालित रूप से हटा दिया जाता है):
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 हमेशा काम नहीं करेंगे - यह वास्तविक विधि पर निर्भर करता है जो उनका उपयोग करता है। यहाँ चेतावनी यह है कि उन्हें हटाया या स्वचालित रूप से जोड़ा जा सकता है, इसलिए बेहतर रूप से इन रूपांतरणों को सावधानीपूर्वक डिबग करें।