gpt4 book ai didi

ios - CoreData 中的数据验证问题

转载 作者:行者123 更新时间:2023-11-30 12:06:44 25 4
gpt4 key购买 nike

所以我试图保存最小值为 0 、最大值为 200 的数据如果我输入适当范围内的数字,它就可以正常工作但如果我尝试输入不同的数字(例如 -1 或 203),它就会卡在这个值上。出现了警报 Controller ,但是当我尝试输入合法值时,它会在控制台中显示前一个值(-1 或 203),并且仅当我输入另一个错误数字(例如 509 和警报 Controller )时,最后一个值才会更改)。我收到错误 1610 和 1620,但我不明白如何解决此问题。我需要确保,如果用户输入错误的值,然后输入正确的值,则一切正常并且保存数据。

这是我的保存代码

chislo = UITextField

@IBAction func saveNote(_ sender: Any) {


if let context = (UIApplication.shared.delegate as? AppDelegate)?.coreDataStack.persistentContainer.viewContext {

let note = BreathingNote(context: context)

chislo.keyboardType = .numberPad

note.chdd = NSNumber(value: Int16(chislo.text!)!)
note.date = dateLabel!.text
note.time = timeLabel!.text
if noteAboutDrug?.text != nil {
note.sideNote = noteAboutDrug.text
}
note.fullDate = (dateLabel.text! + timeLabel.text!)

do {
try context.save()
print("Saving done!")
self.dismiss(animated: true, completion: nil)
navigationController?.popViewController(animated: true)

dismiss(animated: true, completion: nil)
} catch let error as NSError {
let alertController = UIAlertController(title: "Type in two-figure number", message: "", preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Хорошо", style: .cancel)
alertController.addAction(cancelAction)
present(alertController, animated: true)
print(error, error.localizedDescription, error.userInfo)
}
}
}

最佳答案

在您的 saveNote 函数中,您将使用 let note = BreathingNote(context: context) 分配一个新的 BreathingNote。然后,您在此对象上设置值并尝试保存它。如果保存失败,您会提示用户更正其数据,并最终再次调用 saveNote,您将在其中使用更新的数据创建一个新的 BreathingNote 对象。

原始内容 BreathingNote 仍然存在于托管对象上下文中,但是,当您调用 save 时,Core Data 会尝试保存原始内容注释和新的;由于原始笔记仍然存在错误数据,因此保存再次失败。您可以通过调用删除包含错误数据的注释

context.delete(note) 

当你发现失败的保存时;这将从上下文中删除具有无效数据的对象

关于ios - CoreData 中的数据验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46595153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com