ios - 如何在 UITable 的不同部分中存储来自多行的多个文本字段值

标签 ios swift

我目前有两个字典数组来存储数据:

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]]]

screenshot of problem

是否有更好的方法来存储此数据,因为我在加载表时也在 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/

相关文章:

ios - 无法将 Player 类型的值分配给 SKSpriteNode 类型

ios - 从 Storyboard 加载 UILabel,无法更改 cellForRowAtIndexPath 中的框架

iphone - 如何在 Xcode 3.2.5 中实现 iAds

ios - Xcode/swift/ watch 套件 : Watch Extension unintentionally shows push notification on app launch?

json - 从 json 字符串构建 url 时,Alamofire 返回无效的 url

ios - 在 Info.plist iOS 中将 IP 范围添加到传输安全层

ios - 从 GLKQuaternion 中提取的意外滚动和俯仰

objective-c - 使用 UITextFields 和 UITextViews 自定义 UIAlertView

ios - 在 AppDelegate 中的 openURL 之后进行 Segue

ios - 只检索存储在UserDefaults中的键和值