这是我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”
我对此很困惑,顺便说一句,交易意味着什么?非常感谢。
我通过声明一个变量来初始化对象:var achievementDate = AchievementDate()然后将它传递给View Controller。 – Nan
顺便说一句,如何扩大写交易的范围以包含修改,如何解决这个问题?提前致谢。 – Nan
这意味着它作为一个非托管对象开始生活,但是在您第一次调用'realm.add(self,update:true)'(在'viewDidLoad()'内)时就会被管理。要扩大写入事务的范围,您需要将调用从'save()'函数移出'Realm.write(_ :)'。 – bdash