Xcode调试问题与领域

时间:2015-12-09 18:14:52

标签: xcode swift realm lldb

为什么p self.sessionpo self.session返回不同的值,我有点困惑?

我的调试应该信任哪一个?看来我的对象是nil但是它似乎也不是。

enter image description here

enter image description here

我的session.messages是否为零?

2 个答案:

答案 0 :(得分:3)

猜猜我应该阅读文档。

  

调试

     

使用Realm的Swift API调试应用程序必须通过LLDB完成   控制台。

     

请注意,虽然LLDB脚本是通过我们的Xcode插件安装的   允许在Xcode的UI中检查Realm变量的内容,   这对Swift来说还不起作用。相反,这些变量将显示   数据不正确。您应该使用LLDB的po命令进行检查   存储在领域中的数据内容。

答案 1 :(得分:3)

基本原理很清楚:

1)lldb p命令(expr --的别名)评估" - "之后的表达式,然后使用内存检查和"数据格式化程序" lldb中的机制(类型摘要和合成子代,请参阅:http://lldb.llvm.org/varformats.html了解更多详细信息)以打印变量的值。

2)lldb po命令(expr -O --的别名)评估给定的表达式,然后询问结果对象是否有描述自身的方式(description或ObjC中的debugDescription方法或Swift中的Mirror)如果是,则打印该对象返回的字符串。如果没有,则返回#1的结果。

最有可能的是,Realm正在使用一些数据格式化程序通过p为ObjC呈现他们的对象,而那些对于Swift来说还不存在。但该对象仍然知道如何正确显示其调试描述,这就是po工作的原因。