错误:执行被中断,原因:断点 1.2。 Xcode 7.1,斯威夫特
Posted
技术标签:
【中文标题】错误:执行被中断,原因:断点 1.2。 Xcode 7.1,斯威夫特【英文标题】:error: execution was interrupted, reason: breakpoint 1.2. Xcode 7.1, Swift 【发布时间】:2015-11-03 10:32:54 【问题描述】:所以上下文是我创建了一个领域对象并给它的一个变量一个值,为此我继续调用这个对象的一个实例,然后我连接到我的服务器,获取一些值,然后说像
let someObject = someObjectClass() //this being a realm object class
someQuerySuccessBlock (success, error) -> void in
...
if let someValue = objects[0].value
someObject.id = someValue //this line is where the issue is
...
)
let realm = RLMRealm.defaultRealm()
realm.beginWriteTransaction
realm.addObject(someObject)
realm.commitWriteTransaction
llvm 中的错误是错误:执行被中断,原因:断点 1.2。 除非我为所有异常设置断点,否则错误不会显示。
还要注意,代码确实编译,运行,不会导致崩溃(但只是......不要从该特定行开始运行任何代码。someObject 确实被保存和创建,但字段是被分配根本没有被分配,等等
【问题讨论】:
【参考方案1】:经过一些测试,事实证明这是因为领域对象已经保存到领域,因为查询块是异步的,它试图写入已经添加的对象的变量。
似乎错误只是这样,因为我试图编辑的是对象的primaryKey?
我的解决方法:
let someObject = someObjectClass() //this being a realm object class
someQuerySuccessBlock (success, error) -> void in
...
if let someValue = objects[0].value
someObject.id = someValue //this line is where the issue is
let realm = RLMRealm.defaultRealm()
realm.beginWriteTransaction
realm.addObject(someObject)
realm.commitWriteTransaction
...
)
【讨论】:
【参考方案2】:如果您尝试编辑已保存对象的主键,那么您将遇到一个断言。 Realm 中的主键是不可变的。根据您对用例的确切需求,您可能希望创建对象类的新实例并分配应保存的所有新属性。您可以使用-createOrUpdateInRealm:withValue:
在写入事务中添加这个新对象。注意:注意一对一关系和其他可为空的属性,因为此处的合并策略会覆盖空值。
【讨论】:
以上是关于错误:执行被中断,原因:断点 1.2。 Xcode 7.1,斯威夫特的主要内容,如果未能解决你的问题,请参考以下文章
iOS Swift 错误:执行被中断,原因:信号 SIGABRT
Swift JSONDecoder 解码错误:错误:执行被中断,原因:EXC_BAD_ACCESS (code=1, address=0x5e48)