【发布时间】:2016-02-02 17:15:31
【问题描述】:
我怎么打电话
print(NSDate())
而不是接收通常的响应,而是在名为getString() 的函数中获取我拥有的响应,该函数是NSDate 的extension 的一部分。
这是我的扩展:
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)
}
}
请注意,我不想只使用:
NSDate().getString()我想覆盖这个类的原始
description。
更新:
所以,看起来唯一的选择就是Method Swizzling,如果 甚至可能。
有人对赏金感兴趣吗?
注意
我这样做只是为了个人成长和了解 概念,不打算在这种情况下使用它来发布应用程序, 现在甚至不确定我可以在什么情况下使用它。
【问题讨论】:
-
显示你的分机
NSDate().getString()? -
我认为没有必要,除了这个功能我没有添加任何其他东西。我尝试覆盖描述 var 或 func,但我收到一个错误,抱怨 obj 选择器进行描述。不过,我会用它来更新我的答案
-
这就是重点,我不想这样。我想换个说法。
-
我不认为你可以重写
NSDate的description方法,至少不容易。您不能覆盖扩展中的方法,只能覆盖子类中的方法。您可以将其替换为方法调配。这两种方式都很困难(如果可能的话),因为 NSDate 是类集群的一部分。 -
@HugoAlonso:我的建议是:不要这样做 :) – 说真的,我没有解决方案。关于子类化,请参见例如stackoverflow.com/questions/2657275/how-do-i-subclass-nsdate.
标签: ios swift swift2 nsdate method-swizzling