0

最初我尝试使用这样的东西:

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 描述。

4

1 回答 1

1

您不能覆盖扩展中的方法。你想要做的事情在 Swift 中是不可能的。在 ObjC (on NSURL) 中可以通过调配方法来实现,但这绝不应该在生产代码中完成。即使您可以通过一些技巧在 Swift 中实现上述功能,出于同样的原因,您也不应该在生产代码中使用它。它很容易以非常令人惊讶的方式影响您(例如,它可能会破坏NSCoding期望description以某种方式工作的实现。

如果您想要这种风格的字符串,请为其创建一个方法并在需要时调用它。不要description在现有类中修改。

于 2017-09-08T20:47:56.297 回答