ios - 包含 UUID 的结构的奇怪调试行为
问题描述
考虑这个结构:
struct test
{
var id:UUID = UUID()
var name:String = ""
}
执行以下代码行时:
var myTest : test?
调试器正确显示 myTest = nil
然后我执行:
myTest = test()
调试器仍然显示 MyTest = nil
如果我从结构中删除 id 变量,调试器会正确显示 myTest 的值。
似乎每当我在结构中有一个 UUID 时,它都会这样做。
这是 Xcode11 中的错误,还是我遗漏了什么?
这是在声明 myTest 按预期显示为 nil 后的屏幕截图:
这是将 myTest 设置为 test() 并打印后的屏幕截图。可以看到打印显示了初始化的结构,但是调试窗口仍然显示 myTest 为 nil:
解决方案
我不确定您为什么认为这是意外行为。如果你有一个这样的结构:
struct test {
var name: String = ""
}
通过这样做
var myTest: test?
myTest = test()
print(myTest)
结果:Optional(__lldb_expr_7.test(name: ""))
即使您要像这样添加 UUID:
struct test {
var id: UUID = UUID(uuid: UUID_NULL)
var name: String = ""
}
并做了同样的事情
var myTest: test?
myTest = test()
print(myTest)
结果:Optional(__lldb_expr_9.test(id: 00000000-0000-0000-0000-000000000000, name: ""))
你仍然得到结构
如果你有这样的结构
struct test {
var id: UUID = UUID(uuid: UUID_NULL)
var name: String = ""
var lastName: String = ""
}
并且仍然做了同样的事情......
var myTest: test?
myTest = test()
print(myTest)
结果:Optional(__lldb_expr_11.test(id: 00000000-0000-0000-0000-000000000000, name: "", lastName: ""))
你仍然得到结果...
结果都是结构中定义的空字符串或空字符串...
然后我们可以像这样附加到结构
var myTest: test?
myTest = test(id: some_UUID_Number_Here, name: "Jack", lastName: "Sparrow")
print(myTest as Any)
结果:Optional(__lldb_expr_3.test(id: BBDD802E-8976-4D93-A6E2-1D43442EA9CD, name: "Jack", lastName: "Sparrow"))
希望这可以帮助...
推荐阅读
- ffmpeg - ffmpeg api : av_interleaved_write_frame 在 linux 下返回错误损坏的管道
- django - URL 与 Django 中的 url 模式不匹配
- laravel - Chrome 使用了错误的本地 IP 地址
- r - 从热图中得出数值结论 - 空间数据
- javascript - 选中单选按钮时的样式元素
- javascript - 为什么不使用 const、let 或 var 时,嵌套函数只能访问顶级变量?
- d3.js - d3.js - 强制布局不显示节点和链接
- python - 用于时间序列功率谱密度的 plt.psd 函数的窗口
- vue.js - 为什么来自 en.json 的消息没有在 vue 3 + i18n 中翻译
- asp.net - 在 ASP.NET MVC 5 网页中显示查询