gpt4 book ai didi

ios - Xcode 6 仅将文本 "Some"显示为我的 Swift 类对象的唯一值

转载 作者:可可西里 更新时间:2023-11-01 01:06:43 25 4
gpt4 key购买 nike

我正在尝试调试为什么 UIButton 没有显示在用 Swift 编写的键盘扩展显示的 View 中。当它在 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 调试器,因为“Capture View Hierarchy”从未为此项目启用,无论我尝试使用哪个模拟器(iOS 8 从 4s 到 6)。

编辑:根据 Enrico 的建议

(lldb) frame var -d run -- self.dismissButton
(UIButton!) self.dismissButton = Some {}

我用谷歌搜索但没有找到任何关于调试器上下文中“Some”的含义的文档。想知道我的项目是否有配置问题。容器应用程序也是 Swift,但只是一个模板应用程序,完全使用 Xcode 6.0.1 生成的默认值。

Edit2:Enrico,只需输入“frame var”就会产生包含以下内容的详细输出

  dismissButton = Some {
Some = 0x00007fb90261f2e0 {
UIKit.UIControl = {
UIKit.UIView = {
UIKit.UIResponder = {
ObjectiveC.NSObject = {}
}
}
}
}
}

更有趣的是,很高兴发现 Some 实际上意味着什么(不确定它是否是 nil 的特例版本),但仍然需要一种方法来更深入地研究对象。

最佳答案

因为你的 UIButton 是一个 Swift 可选的(注意名称末尾的爆炸符号),它的类型不是 UIButton,而是 Swift.ImplicitlyUnwrappedOptional

这是一个有两种情况的枚举

enum IOU<T> {
case Some(T)
case None
}

您看到的 Some 就是这样:对应于“此可选包含 UIButton”的枚举的情况

不幸的是,我认为 6.0.1 不会让您比您已经取得的进展更远。 po-ing 之所以有效,是因为它知道代表您解包。

关于ios - Xcode 6 仅将文本 "Some"显示为我的 Swift 类对象的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26094167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com