1

我收到了cannot create BOOL from objectCoreData 的错误。我阅读了很多关于此的问题,都得出了相同的结论:IB 中的绑定不正确。
有没有一种方法可以例如列出所有绑定,或者是否有一个实用程序可以检查绑定的类型?也许捕捉到错误,或者实现一个在发生这种情况时被调用的方法,以便我可以检索绑定对象的名称?我宁愿自己解决它,也不愿让别人很好地分析我的.xib.

4

1 回答 1

1

我一直在为此拔头发。在具有数十个或可能数百个绑定的 XIB 中,几乎不可能找出它的来源。但我终于找到了一种缩小范围的方法。

我只是设置了一个符号断点

-[NSValueBinder _observeValueForKeyPath:ofObject:context]

并配置如下

  • 操作:调试器命令,输入po $rdi作为要执行的命令。这将在每次断点被击中时打印出self (即 NSValueBinder 描述)。这个 ( $rdi) 是针对 x86_64 的,对于其他架构,请参阅这篇文章
  • 检查评估后自动继续

现在,当我运行程序时,我会在控制台中看到一堆与绑定相关的日志,它们看起来应该是这样的:

$7 = 4301564448 <NSTextValueBinder: 0x10064aa20>{object: <NSTextFieldCell: 0x10061eea0>, bindings: value=selection.myProperty}

最后一个显然是引发异常的那个。我通常可以直接从绑定值或从错误发生之前建立的其他一些绑定中找出它是哪个视图。另一件有帮助的事情是检查违规对象的superview 或,例如在上面的示例中。controlViewpo [0x10061eea0 controlView]

于 2013-03-12T14:48:43.053 回答