覆盖URL描述

时间:2017-09-08 19:31:25

标签: url swift3 foundation customstringconvertible

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

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)仍会显示包含百分比的旧网址说明。

1 个答案:

答案 0 :(得分:1)

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

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