Realm不想更新RLMObject属性的值

时间:2015-03-26 07:15:57

标签: ios swift realm

我在新的iOS项目中使用Realm。我正在插入新的RLMObject

let realm = RLMRealm.defaultRealm()
var route = Route()
route.status = "opened"

realm.beginWriteTransaction()
realm.addObject(route)
realm.commitWriteTransaction()

我希望像这样更新route状态(在单独的函数中):

let realm = RLMRealm.defaultRealm()
let openedRoutes = Route.objectsWhere("status == 'opened'")
var openedRoute = openedRoutes.objectAtIndex(0) as Route

realm.beginWriteTransaction()
openedRoute.status = "closed"
realm.commitWriteTransaction()

但它不会更新任何内容。

我做错了什么?感谢您的时间和帮助。

其他信息

当我执行例如po self时,日志中存在错误:

error: Error in auto-import:
failed to get module '*' from AST context:
/Users/peterdruska/Library/Developer/Xcode/DerivedData/Cesty-hijwnftlnwubfmgymqpszfmjojrr/Build/Products/Debug-iphoneos/Pods/Realm.framework/Headers/Pods-Realm-umbrella.h:3:9: note: in file included from /Users/peterdruska/Library/Developer/Xcode/DerivedData/Cesty-hijwnftlnwubfmgymqpszfmjojrr/Build/Products/Debug-iphoneos/Pods/Realm.framework/Headers/Pods-Realm-umbrella.h:3:
#import "RLMArray.h"

…

我使用可可豆荚安装了Realm。

1 个答案:

答案 0 :(得分:0)

您是否在更新后直接在同一个线程上从同一个Realm访问该对象,以确保您的更改已应用?是否可能发生任何同时写入事务,这会阻止更改生效?如果没有,您在何时何地错过了修改的传播?

如果它是另一个Realm,那么只有在编写了写入事务并且通知了Realm时,您才能期望更新的属性,您可以使用Notification API来确保,例如:

let token = realm.addNotificationBlock { note, realm in
    assert(self.lastOpenedRoute.status == "closed")
}

关于您的其他信息

这似乎是a known issue with CocoaPods & LLDB,我们尚未解决。