Swift version: 5.10
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.
SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!
Sponsor Hacking with Swift and reach the world's largest Swift community!
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.