我试图调试为什么UIButton没有显示在用Swift编写的Keyboard扩展显示的视图中。当它在LLDB调试器(Xcode 6.0.1)中显示为
时dismissButton = (UIButton!) Some
我尝试使用变量前面的小分层箭头检查它的联系人,但是当我切换它时没有显示任何内容。
我尝试用PO打印出来并获取
<UIButton: 0x7fa673e0c6f0; frame = (27 14; 183 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7fa673e0b680>>
哪个看起来不完整(隐藏在哪里?)
有没有办法直接检查LLDB中Swift类对象的属性?我不能使用View Hierarchy调试器,因为&#34; Capture View Hierarchy&#34;永远不会为这个项目启用,无论我尝试哪种模拟器(iOS 8从4s到6)。
编辑:根据Enrico的建议
(lldb) frame var -d run -- self.dismissButton
(UIButton!) self.dismissButton = Some {}
我用谷歌搜索但没有找到关于什么&#34;某些&#34;意味着在调试器上下文中。想知道我是否对项目有一些配置问题。容器App也是Swift,但它只是一个模板应用程序,完全使用Xcode 6.0.1生成的默认值。
Edit2:恩里科,只需输入&#39; frame var&#39;产生详细输出,其中包含以下内容
dismissButton = Some {
Some = 0x00007fb90261f2e0 {
UIKit.UIControl = {
UIKit.UIView = {
UIKit.UIResponder = {
ObjectiveC.NSObject = {}
}
}
}
}
}
它更有趣,很高兴发现有些实际意味着什么(不确定它是否是nil的特殊情况版本),但仍然需要一种方法来更深入地挖掘对象。 / p>
答案 0 :(得分:3)
由于您的UIButton是一个Swift可选项(请注意名称末尾的爆炸符号),其类型不是UIButton,它是Swift.ImplicitlyUnwrappedOptional
这是一个包含两个案例的枚举
enum IOU<T> {
case Some(T)
case None
}
您正在看到的一些就是:枚举的情况与&#34相对应;此选项包含UIButton&#34;
不幸的是,我不认为6.0.1会比你已经得到的更远。 po-ing有效,因为它知道为你打开包装。