我有这段代码,应该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
这对我没有任何意义,因为我已经在写一个事务处理......
答案 0 :(得分:2)
在应用Realm
模块之前,您需要创建一个write
对象。
根据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)")
}
}
希望它有所帮助!
答案 1 :(得分:1)
问题是我使用的是普通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!
需要一些重构,但我现在有了。感谢那些花时间帮助我的人。
答案 2 :(得分:1)
您可以通过设置默认配置将let realm = try! Realm()
与自定义默认配置结合使用,请参阅here:
var config = Realm.Configuration()
// Set this as the configuration used for the default Realm
Realm.Configuration.defaultConfiguration = config