Я в настоящее время есть два массива словарей для хранения данных:Как хранить несколько значений TextField из нескольких строк в различных разделах UITable
var workoutData = [String:[String:[String:Int]]]()
и
var workoutSets = [String:[String:Int]]()
поручает данные для workoutSets, когда checkBox проверяется в конце этой строки, а затем назначает данные workoutSets
на workoutData
в целом:
workoutSets["Set \(indexPath.row)"] = ["Weight":Int(weightLifted)!, "Reps":Int(repsPerformed)!]
workoutData[exercise] = workoutSets
Это работает отлично для первого раздела данных, но когда я вводить данные в первую строку следующего раздела в UITable
и проверять checkbox, значения для других строк данных переносятся вперед. Я добавил скриншот, чтобы вы могли видеть, с чем я столкнулся.
При печати workoutData
выглядит
["Cable Row": ["Set 2": ["Weight": 10, "Reps": 12],"Set 3": ["Weight": 28, "Reps": 8],"Set 1": ["Weight": 45, "Reps": 5]],
"Arnold Press": ["Set 2": ["Weight": 10, "Reps": 12], "Set 3": ["Weight": 28, "Reps": 8], "Set 1": ["Weight": 10, "Reps": 12]]]
Есть ли лучший способ хранения этой информации, потому что я также использую workoutData
в методе cellForRowAt
при загрузке таблицы, так что клетки данные не будут использоваться повторно при загрузке новой ячейки.
, вероятно, нужно бы увидеть метод cellForRowAt и полную функцию, которая вызывается при проверке флажок (если есть больше). Вы также можете использовать структуры, чтобы упорядочить эту информацию гораздо более четко, чем вклады вложенных уровней. Это сложно отслеживать. Вы также можете использовать свойство «index» вместо «set 1», «set 2» и т. Д. Затем вы можете просто найти правильный набор по индексу. – Frankie
@Frankie Если бы я хотел использовать структуру, вы бы предложили что-то вроде: 'struct workoutExercise: var name: String? var weightLifted: [Int]? var repsPerformed: [Int]? ' и обновлять данные, когда каждый флажок установлен? – MHDev