This is how my Object classes looks like:
Workout.swift:
class Workout: Object {
    @objc dynamic var date: Date?
    // List of exercises (to-many relationship)
    var exercises = List<Exercise>()
}
Exercise.swift
class Exercise: Object {
    @objc dynamic var name: String?
    // List of sets (to-many relationship)
    var sets = List<Set>()
    var parentWorkout = LinkingObjects(fromType: Workout.self, property: "exercises")
}
Set.swift
class Set: Object {
    @objc dynamic var reps: Int = 0
    @objc dynamic var kg: Double = 0.0
    @objc dynamic var notes: String?
    // Define an inverse relationship to be able to access your parent workout for a particular set (if needed)
    var parentExercise = LinkingObjects(fromType: Exercise.self, property: "sets")
    convenience init(numReps: Int, weight: Double, aNote: String) {
       self.init()
       self.reps = numReps
       self.kg = weight
       self.notes = aNote
    }
}
I am trying to save this to realm using a buttonAction like this:
let newWorkout = Workout()
let newExercise = Exercise()
let newSet = Set() 
let nowDate = Date()
func saveWorkout() {
    if numberOfSets > 0 {
        print("Saving workout...")
        let realm = try! Realm()
        let cells = self.tableView.visibleCells as! Array<ExerciseCreatorCell>
        for cell in cells {
            if cell.kgTextField.text == ""  {
                cell.kgTextField.shake()
                return
            } else if cell.repsTextField.text == "" {
                cell.repsTextField.shake()
                return
            } else { // Add every single set
                newSet.reps = Int(cell.repsTextField.text!)!
                newSet.kg = Double(cell.kgTextField.text!)!
                newExercise.sets.append(newSet)
            }
        }
        print("NEXT")
        newExercise.name = exerciseNameButton.currentTitle
        newWorkout.exercises.append(newExercise)
        newWorkout.date = nowDate
        try! realm.write {
            realm.add(newWorkout)
            print("Saved!")
        }
    } else {
        let alert = UIAlertController(title: nil, message: "Please add any exercise before saving!", preferredStyle: UIAlertController.Style.alert)
        alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
        self.present(alert, animated: true, completion: nil)
    }
}
Each row in the UITableView indicates a workout set. The problem is; Let's say that I have added total 4 sets/rows, with different values for kg and reps for each set. After saving this, it saves the last set/row for all the 4 sets. Any tips?