为什么p self.session
和po self.session
返回不同的值,我有点困惑?
我的调试应该信任哪一个?看来我的对象是nil
但是它似乎也不是。
我的session.messages
是否为零?
答案 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
工作的原因。