2015-11-03 77 views
0

所以上下文是我创建了一个领域对象,并给它的一个变量赋值,为此我继续调用这个对象的一个​​实例,然后连接到我的服务器,获得一些值,然后说类似错误:执行被中断,原因:断点1.2。 Xcode 7.1,Swift

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

经过一番测试后,原来这是因为领域对象已经保存到领域,其中作为查询块是异步,它试图写入一个变量一个已经添加的对象

似乎错误只是这样,因为我试图编辑的是对象的主键?

我的解决办法:

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 
     } 
     ... 
    }) 
0

如果您尝试编辑保存的对象的主键,那么你会打一个断言。 Realm中的主键是不可变的。根据您对用例的确切需求,您可能需要创建对象类的新实例并分配应保存的所有新属性。您可以在-createOrUpdateInRealm:withValue:的写入事务中添加这个新对象。注意:要小心一对一关系和其他可空属性,因为合并策略在这里覆盖空值。