Swift version: 5.6
Swift’s ExpressibleByStringLiteral
protocol lets us create any type directly from a string – as long as Swift understands what type you mean, you can create whatever you want.
For example, if you regularly hard-code URLs and are tired of force unwrapping them when you know they are definitely correct, you can make URL
conform to ExpressibleByStringLiteral
so that URLs can be created directly from strings:
extension URL: ExpressibleByStringLiteral {
public init(stringLiteral value: String) {
self = URL(string: value)!
}
}
With that extension in place you can now write code like this:
let url: URL = "https://www.hackingwithswift.com"
print(url.absoluteString)
Notice that I’ve clearly marked url
as being of type URL
so that Swift doesn’t think it’s a regular string.
SAVE 50% To celebrate WWDC23, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.