【问题标题】:Realm does not want to update values of RLMObject propertiesRealm 不想更新 RLMObject 属性的值
【发布时间】:2015-03-26 07:15:56
【问题描述】:

我在我的新 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。

【问题讨论】:

    标签: ios swift realm


    【解决方案1】:

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

    如果它是另一个 Realm,那么您只能在提交写入事务并通知 Realm 后立即更新属性,您可以通过使用 Notification API 来确保这一点,例如:

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

    关于您的附加信息

    那似乎是a known issue with CocoaPods & LLDB,我们还没有解决这个问题。

    【讨论】:

    • 谢谢你,马吕斯。一切都在同一个线程中。但正如你所提到的,当我安装 Realm 而不使用 CocoaPods 时,一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    相关资源
    最近更新 更多