Переопределить описание URL
Первоначально я пытался использовать что-то вроде этого:
extension URL: CustomStringConvertible{
public override var description: String {
let url = self
return url.path.removingPercentEncoding ?? ""
}
}
После исправления кода предупреждения компилятор стал:
extension URL{
public var description: String {
let url = self
return url.path.removingPercentEncoding ?? ""
}
}
но
print(fileURL)
все еще показывает старое описание URL с процентами.
1 ответ
Вы не можете переопределить метод в расширении. То, что вы пытаетесь сделать, невозможно в Swift. Это возможно в ObjC (на NSURL
), используя методы, но это никогда не должно выполняться в производственном коде. Даже если вы можете заставить вышеописанное работать в Swift с помощью некоторых хитростей, вы никогда не должны использовать это в производственном коде по той же причине. Это может легко повлиять на вас очень неожиданными способами (например, это может сломать NSCoding
реализации, которые ожидают description
работать определенным образом.
Если вам нужен этот стиль строки, создайте для него метод и вызывайте его, когда захотите. Не модифицируйте description
в существующем классе.