Ios 将多个UITableView行中的值保存到域列表<&燃气轮机;()
这就是我的Ios 将多个UITableView行中的值保存到域列表<&燃气轮机;(),ios,swift,xcode,realm,realm-list,Ios,Swift,Xcode,Realm,Realm List,这就是我的对象类的外观: www.swift: class Workout: Object { @objc dynamic var date: Date? // List of exercises (to-many relationship) var exercises = List<Exercise>() } 我试图使用如下按钮操作将其保存到领域: let newWorkout = Workout() let newExercise = Exercis
对象
类的外观:
www.swift:
class Workout: Object {
@objc dynamic var date: Date?
// List of exercises (to-many relationship)
var exercises = List<Exercise>()
}
我试图使用如下按钮操作将其保存到领域:
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)
}
}
let newWorkout=Workout()
让newExercise=Exercise()
让newSet=Set()
让nowDate=Date()
func saveWorkout(){
如果numberOfSets>0{
打印(“保存训练…”)
让realm=try!realm()
让cells=self.tableView.visibleCells为!数组
细胞中的细胞{
如果cell.kgTextField.text==“”{
cell.kgTextField.shake()单元格
返回
}否则,如果cell.repsTextField.text==“”{
cell.repsTextField.shake()
返回
}else{//添加每一个集合
newSet.reps=Int(cell.repsTextField.text!)!
newSet.kg=Double(cell.kgTextField.text!)!
newExercise.set.append(新闻集)
}
}
打印(“下一页”)
newExercise.name=exerciseNameButton.currentTitle
newWorkout.exercises.append(newExercise)
newWorkout.date=nowDate
试试看!写吧{
realm.add(新训练)
打印(“已保存!”)
}
}否则{
let alert=UIAlertController(标题:nil,消息:“保存前请添加任何练习!”,首选样式:UIAlertController.Style.alert)
addAction(UIAlertAction(标题:“确定”,样式:UIAlertAction.style.default,处理程序:nil))
self.present(警报、动画:true、完成:nil)
}
}
UITableView
中的每一行表示一个训练集。问题是,;假设我总共添加了4组/行,每组的kg和reps值不同。保存后,将保存所有4组的最后一组/行。有任何提示吗?self.tableView.visibleCells不建议使用,原因如下:1。若你们有更多的行可以显示在屏幕上,那个么visiblecells只有屏幕上的行。2.细胞被重复使用。可能第10单元的数据与第1单元的数据相同。对于noe move newSet=Set(),在else{//中添加每一个集合。它将修复该集合save@Sammy这很有效,谢谢!你有其他解决方案吗?因为不推荐使用可视单元格?Sammy是正确的。除此之外,最好的方法是每次用户输入一个新的集合时都保存一个新的集合(这会依次在tableView中创建一行)。为什么要同时保存所有行?如何保存数据(repsTextField.text和kgTextField.text)对于每一行?我假设用户输入它们。您需要有一个从单元格到tableView控制器的委托。当用户在这些文本字段中输入数据时,您将其保存到variable@rs7我认为这是最简单的解决方案。我如何做到这一点?我如何每次保存一个新行,而不是每次都保存同一行?
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
}
}
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)
}
}