Hug*_*nso 3 nsdate ios swift method-swizzling swift2
我该怎么打电话
print(NSDate())
Run Code Online (Sandbox Code Playgroud)
和而不是接收通常的响应,获得所述一个我有一个命名的函数getString()是一个部分extension的NSDate.
这是我的扩展:
extension NSDate {
//NSDate to String
public func getString() -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ"
dateFormatter.locale = NSLocale.currentLocale()
return dateFormatter.stringFromDate(self)
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我不想只使用:
Run Code Online (Sandbox Code Playgroud)NSDate().getString()我想覆盖
description这个类的原始.
更新:
所以,一切看起来像唯一的选择是方法调整,如果可能的话.
谁对赏金感兴趣?
当心
我这样做只是为了个人成长并理解这个概念,而不是计划在这种情况下使用它来运送应用程序,现在甚至不确定我可以使用它的场景.
import Foundation
extension NSDate: Streamable {
public func writeTo<Target : OutputStreamType>(inout target: Target) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZ"
dateFormatter.locale = NSLocale.currentLocale()
print("without swizzling", dateFormatter.stringFromDate(self), toStream: &target)
}
}
let date = NSDate()
print(date) // without swizzling 2016-03-05 00:09:34 +0100
Run Code Online (Sandbox Code Playgroud)
打印'默认'/原始行为/使用
print(date.description)
Run Code Online (Sandbox Code Playgroud)
如果您担心在扩展中使用打印,只需将其替换为
//print("without swizzling", dateFormatter.stringFromDate(self), toStream: &target)
let str = dateFormatter.stringFromDate(self)
str.writeTo(&target)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
574 次 |
| 最近记录: |