覆盖 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