1

在 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 中所做的事情(有关详细信息,请参阅此问题),但到目前为止,我还在为如何在 Swift 中做到这一点而苦苦挣扎。

4

1 回答 1

4

它们是 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

...感谢必须去狮子座!

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

debugPrint(NSDate()) // FOO
于 2015-12-15T19:20:16.430 回答