我目前有两个字典数组来存储数据:
var workoutData = [String:[String:[String:Int]]]()
和
var workoutSets = [String:[String:Int]]()
我在该行末尾选中复选框时将数据分配给锻炼集,然后将workoutSets
数据分配给workoutData
。
workoutSets["Set \(indexPath.row)"] = ["Weight":Int(weightLifted)!, "Reps":Int(repsPerformed)!]
workoutData[exercise] = workoutSets
这对于数据的第一部分工作正常,但是当我将数据输入到 UITable
中下一部分的第一行并选中复选框时,其他数据行的值将被结转。我添加了一个屏幕截图,这样您就可以看到我面对的是什么。
打印时,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
,以便在加载新单元格时不会重复使用单元格数据。
最佳答案
为了存储这种具有定义的属性和属性的结构化对象的数据,将其定义为从 NSObject
继承的对象会更有意义。
对于这个自定义对象,您可以将所需的属性定义为“重量”和“次数”。还可以创建类 Set
的复合对象,您可以向其中添加对象数组。给出以下对象层次结构可能会有所帮助。
公开课锻炼{
变种显示名称:字符串?
变量集:[设置]?
变量键:字符串?
}
公共(public)类集{
变量权重:整数?
变种代表:国际?
}
var workouts = [Workout]()
var workout1 = Workout()
workout1.displayName = "Arnold Press"
workout1.sets = [设置]()
var set1 = 设置()
set1.reps = 10
set1.weight = 80
workout1.sets?.append(set1)
var set2 = Set()
set2.reps = 12
set2.weight = 80
workout1.sets?.append(set2)
var workout2 = Workout()
workout2.displayName = "电缆排"
workout2.sets = [设置]()
var set11 = 设置()
set11.reps = 10
set11.weight = 80
workout1.sets?.append(set11)
var set22 = Set()
set22.reps = 12
set22.weight = 80
workout2.sets?.append(set22)
workouts.append(workout1)
workouts.append(workout2)
关于ios - 如何在 UITable 的不同部分中存储来自多行的多个文本字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41043973/