2017-09-08 184 views
0

本來我試圖用這樣的:覆蓋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