Sorry about the title, i’m not quite sure how to stay this succinctly. In any case, in my (iOS/Swift ut not SwfitUI) app, the user can edit an object (for example Team
) over a number of screens. When I first start, I create a team using
// Team is subclass of Realm Object
let team = Team()
let realm = try Realm()
// save copy of team into a property or something in memory
realm.beginWrite()
realm.add(team)
}
and then later in the app, after a number of interactions with the user:
var team = // fetch copy of team from memory
let realm = try Realm()
team.name="bar"
// other updates to "team".
try realm.commitWrite()
This seems to work fine, however I was just wondering if this is “OK” to do since I’m calling beginWrite
and commitWrite
in different calls to let realm = Realm()
.
I’m sure that the user has not and will not perform any other realm queries/writes during this flow since if the user “cancels” out of editing the “team”, I call realm.cancelWrite
.
Thanks!
A more detailed example of what I’m going looks like this:
class MyViewController: UIViewController {
private var team: Team?
@IBOutlet weak var nameTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
do {
// setup realm configuration up here somewhere
let realm = try Realm()
realm.beginWrite()
let team = Team()
realm.add(team)
} catch {
print("Error: \(error)")
}
}
@objc func submitTapped(_ sender: Any) {
let name = self.nameTextField.text!.trim()
guard let team = self.team else {
return
}
do {
let realm = try Realm()
self.team.name = name
try realm.commitWrite()
} catch {
print ("Error: \(error)")
}
}
}