DEV Community

Cover image for Swift Features: Static URL
Vadim Atamanenko
Vadim Atamanenko

Posted on

Swift Features: Static URL

Tired of using URL(string: "url")! for static urls? 💡Make the URL match ExpressibleByStringLiteral and you can just use "url".

extension URL: ExpressibleByStringLiteral {
    // By using 'StaticString' we disable string interpolation, for safety
    public init(stringLiteral value: StaticString) {
        self = URL(string: "\(value)").require(hint: "Invalid URL string literal: \(value)")
    }
}
Enter fullscreen mode Exit fullscreen mode
// We can now define URLs using static string literals 🎉
let url: URL = "https://www.apple.com"
let task = URLSession.shared.dataTask(with: "https://www.apple.com")`
Enter fullscreen mode Exit fullscreen mode
// In Swift 3 or earlier, you also have to implement 2 additional initializers
extension URL {
    public init(extendedGraphemeClusterLiteral value: StaticString) {
        self.init(stringLiteral: value)
    }

public init(unicodeScalarLiteral value: StaticString) {
        self.init(stringLiteral: value)
    }
}
Enter fullscreen mode Exit fullscreen mode

Oldest comments (0)