1

在调试我的应用程序时,我想打印出局部变量orientype的值UIInterfaceOrientation

我试过print("\(orien")了,但它打印了:

UIInterfaceOrientation

...这显然是无用的。

然后我尝试dump(orien)了,它产生了另一个无用的输出:

- __C.UIInterfaceOrientation

在 Xcode 中,我设置了一个断点并右键单击该变量并选择Print Description of,这会产生:

Printing description of orien:
(UIInterfaceOrientation) orien = <variable not available>

我最终写了:

extension UIInterfaceOrientation {
  func dump() {
    switch self {
    case .portrait: print("Interface orientation is Portrait")
    case .portraitUpsideDown: print("Interface orientation is Portrait upside down")
    case .landscapeLeft: print("Interface orientation is Landscape left")
    case .landscapeRight: print("Interface orientation is Landscape right")
    case .unknown: print("Interface orientation is unknown")
    }
  }
}

有更好的解决方案吗?

顺便说一句,这个问题也发生在 CGFloat 上——XCode 的调试器将其打印为<variable not available>.

4

1 回答 1

1

你不能只打印枚举案例的 rawValue 吗?显然,这是不可能的,因为它返回一个 Int,因为它是 IntUIInterfaceOrientation的枚举。

编辑:以下代码可能会有所帮助,因为它使用变量创建描述。

extension UIInterfaceOrientation {
public var description: String {
    switch self {
    case .landscapeLeft: return "landscapeLeft"
    case .landscapeRight: return "landscapeRight"
    case .portrait: return "portrait"
    case .portraitUpsideDown: return "portraitUpsideDown"
    case .unknown: return "unknown"
    }
}
}

添加后,您可以通过description以下方式使用:

UIInterfaceOrientation.landscapeLeft.description

landscapeLeft
于 2017-03-11T08:35:38.050 回答