如何在Swift中覆盖NSDate对象的debugDescription

时间:2015-12-15 19:08:35

标签: swift debugging override swift-extensions

在Xcode调试器中显示debugDescription个对象的值时,我试图覆盖NSDate属性。

我的扩展程序代码:

import Foundation

extension NSDate {
   public override var debugDescription: String {
      return "FOOFOOFOO" 
   }

   public func yeah() -> String {
      return "yeah!"
   }
}

我已经确认带有扩展代码的文件包含在测试项目目标中,因为我可以在调试器的输出中成功调用yeah函数和print。但是,我似乎无法使用debugDescription属性。

请注意,我的实际目标是执行我之前在Objective-C中所做的操作(有关详细信息,请参阅this question),但到目前为止还在如何在Swift中进行操作。

1 个答案:

答案 0 :(得分:1)

是Swift中的两个独立协议

struct S : CustomStringConvertible, CustomDebugStringConvertible {
    var description: String {
        return "description"
    }
    var debugDescription : String {
        return "debug description"
    }
}

let s = S()
print(s)        // description
debugPrint(s)   // debug description

... 谢谢你得去Leo !!!

import Foundation
extension NSDate: CustomDebugStringConvertible {
    public override var debugDescription: String {
            return "FOO"
    }
}

debugPrint(NSDate()) // FOO