所以上下文是我创建了一个领域对象,并给它的一个变量一个值,为此我继续调用这个对象的实例,然后我连接到我的服务器,得到一些值,然后说
之类的东西 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确实会被保存并创建,但是该字段是被分配只是没有被分配等等
答案 0 :(得分:0)
经过一些测试后,事实证明这是因为领域对象已经保存到Realm中,因为查询块是异步的,它试图写入已经添加的对象的变量。
似乎错误只是这样,因为我试图编辑的是对象的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
}
...
})
答案 1 :(得分:0)
如果您尝试编辑已保存对象的主键,那么您将点击一个断言。 Realm中的主键是不可变的。根据您对用例的确切需求,您可能希望创建对象类的新实例并分配应保存的所有新属性。您可以在-createOrUpdateInRealm:withValue:
的写入事务中添加此新对象。注意:注意一对一关系和其他可空属性,因为合并策略在这里会覆盖空值。