覆盖 URL 描述
Override URL description
最初我尝试使用这样的东西:
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 描述。
您不能覆盖扩展中的方法。 Swift 无法执行您尝试执行的操作。在 ObjC 中(在 NSURL
上)通过调配方法是可能的,但这永远不应该在生产代码中完成。即使你可以通过一些技巧让上面的代码在 Swift 中工作,出于同样的原因,你也不应该在生产代码中使用它。它很容易以非常令人惊讶的方式影响您(例如,它可能会破坏期望 description
以某种方式工作的 NSCoding
实现。
如果您想要这种风格的字符串,请为它创建一个方法并在需要时调用它。不要修改现有 class.
中的 description
最初我尝试使用这样的东西:
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 描述。
您不能覆盖扩展中的方法。 Swift 无法执行您尝试执行的操作。在 ObjC 中(在 NSURL
上)通过调配方法是可能的,但这永远不应该在生产代码中完成。即使你可以通过一些技巧让上面的代码在 Swift 中工作,出于同样的原因,你也不应该在生产代码中使用它。它很容易以非常令人惊讶的方式影响您(例如,它可能会破坏期望 description
以某种方式工作的 NSCoding
实现。
如果您想要这种风格的字符串,请为它创建一个方法并在需要时调用它。不要修改现有 class.
中的description