领域写入事务失败,尽管在事务中
Realm write transaction failing, despite being in transaction
我有这段代码,它应该在 messages
后附加一个新的 message
:
func addMessage(_ message: Message) {
do {
try Realm().write {
self.messages.append(message)
}
} catch let error {
print("could not add message due to error:\n\(error)")
}
}
但是,我得到一个异常Cannot modify managed RLMArray outside of a write transaction
这对我来说没有任何意义,因为我已经在写入事务中...
您需要在应用 write
模块之前创建一个 Realm
对象。
根据GitHub documentation,您可以尝试这样的代码:
func addMessage(_ message: Message) {
do {
let realm = try! Realm()
try! realm.write {
self.messages.append(message)
}
} catch let error {
print("Could not add message due to error:\n\(error)")
}
}
希望对您有所帮助!
问题是我使用的是没有特殊配置的普通 Realm
对象。由于我使用的是 Realm Mobile Platform,每次我想写入该数据库时,我都需要创建一个具有相同配置的 Realm
对象:
let configuration = Realm.Configuration(
syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://127.0.0.1:9080/~/speciail")!)
)
self.realm = try! Realm(configuration: configuration)
//now do the write transaction!
需要一些重构,但我现在有了。感谢那些花时间帮助我的人。
您可以通过设置默认配置将 let realm = try! Realm()
与自定义默认配置一起使用,请参阅 here:
var config = Realm.Configuration()
// Set this as the configuration used for the default Realm
Realm.Configuration.defaultConfiguration = config
我有这段代码,它应该在 messages
后附加一个新的 message
:
func addMessage(_ message: Message) {
do {
try Realm().write {
self.messages.append(message)
}
} catch let error {
print("could not add message due to error:\n\(error)")
}
}
但是,我得到一个异常Cannot modify managed RLMArray outside of a write transaction
这对我来说没有任何意义,因为我已经在写入事务中...
您需要在应用 write
模块之前创建一个 Realm
对象。
根据GitHub documentation,您可以尝试这样的代码:
func addMessage(_ message: Message) {
do {
let realm = try! Realm()
try! realm.write {
self.messages.append(message)
}
} catch let error {
print("Could not add message due to error:\n\(error)")
}
}
希望对您有所帮助!
问题是我使用的是没有特殊配置的普通 Realm
对象。由于我使用的是 Realm Mobile Platform,每次我想写入该数据库时,我都需要创建一个具有相同配置的 Realm
对象:
let configuration = Realm.Configuration(
syncConfiguration: SyncConfiguration(user: user, realmURL: URL(string: "realm://127.0.0.1:9080/~/speciail")!)
)
self.realm = try! Realm(configuration: configuration)
//now do the write transaction!
需要一些重构,但我现在有了。感谢那些花时间帮助我的人。
您可以通过设置默认配置将 let realm = try! Realm()
与自定义默认配置一起使用,请参阅 here:
var config = Realm.Configuration()
// Set this as the configuration used for the default Realm
Realm.Configuration.defaultConfiguration = config