关于 Realm 数据库中的事务

这是我的Realm对象:

class AchievementDate : Object {

    dynamic var date: Date = Date()
    dynamic var apple: Int = Int(0)

    func save() {
        do {
            let realm = try Realm()
            try realm.write {
                realm.add(self)
            }
        } catch let error as NSError {
            fatalError(error.localizedDescription)
        }
    }
}

我在视图控制器的viewDidLoad()方法中更改了苹果的值,如您所见:

override func viewDidLoad() {      
    super.viewDidLoad()
    achievementDate.apple = 2
    achievementDate.save()    
}

然后当用户点击屏幕上的暂停按钮时更新苹果的值,如下所示:

@IBAction func pausedButtonTapped(_ sender: UIButton) {
    achievementDate.apple += 1
    achievementDate.save()
}

Xcode 成功运行它,但是当我单击暂停按钮时,应用程序崩溃了。在控制台它说:

*** 由于未捕获的异常“RLMException”而终止应用程序,原因:“尝试在写入事务之外修改对象 - 首先在 RLMRealm 实例上调用 beginWriteTransaction。”

我对此很困惑,顺便说一句,交易一般意味着什么?非常感谢。

破折号

写事务用于将 Realm 内对象的修改分组到单个工作单元中。托管领域对象只能在写入事务中修改。写入事务的范围是您传递给调用的块Realm.write(_:)调用write开始一个写事务,主体在事务处于活动状态的情况下执行,当块返回时,写事务被提交并且更改被持久化到领域文件。

您还没有分享如何achievementDate初始化,但根据您看到的例外情况,可以安全地假设它AchievementDate是一个托管对象实例(也就是说,它要么是创建的,然后是添加到领域的,要么是从 Realm 加载)。作为例外说明,您只能在写入事务中修改托管对象。您可以扩展写入事务的范围以包含对托管对象的修改,也可以避免完全修改托管对象(通过向模型类添加主键,并使用其中一个Realm.create(_:value:update:)Realm.add(_:update:)withupdate: true更新现有对象给定的主键值)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

关于事务和嵌套数据库写入(使用Scala)

来自分类Dev

如何在Android中清除Realm中的数据库

来自分类Dev

关于Laravel中数据库表的关系

来自分类Dev

关于在php中连接数据库的错误

来自分类Dev

在LUA中需要关于数据库storequery的帮助

来自分类Dev

关于Laravel中数据库表的关系

来自分类Dev

无法在iOS的Realm数据库中存储Double值

来自分类Dev

如何在Realm数据库的架构中添加字段?

来自分类Dev

将图像插入Android中的Realm数据库

来自分类Dev

从 Realm 数据库 (Android) 中获取单列

来自分类Dev

从RecyclerView和Realm数据库中删除项目

来自分类Dev

如何在 Realm 中拆分数据库模式?

来自分类Dev

关于使用存储在记录中的数据库名称的跨数据库子查询

来自分类Dev

关于数据库开发环境的建议

来自分类Dev

关于创建简单的SQLite数据库

来自分类Dev

关于设计数据库

来自分类Dev

关于 MySQL 数据库的建议

来自分类Dev

Android Realm默认数据库清除

来自分类Dev

Realm.io压缩数据库

来自分类Dev

Realm 数据库是如何工作的?

来自分类Dev

Realm 数据库解密失败

来自分类Dev

Realm 数据库链接对象

来自分类Dev

关于FMDB(Objective-C数据库库)的错误

来自分类Dev

关于FMDB(Objective-C数据库库)的错误

来自分类Dev

关于oracle数据库和实例,我可以在XE版中创建数据库吗?

来自分类Dev

关于oracle数据库和实例,我可以在XE版中创建数据库吗?

来自分类Dev

(Python/JSON/MySQL)关于不会传输到数据库的 JSON 中的财务数据的建议

来自分类Dev

有没有办法更改Realm数据库中的数据类型?

来自分类Dev

关于TClientDataSet中的数据

Related 相关文章

热门标签

归档