sqlite - 允许 SQLite INSERT 对于 Integer 是可选的 (Swift 3)

标签 sqlite swift3

我使用下面的插入行来保存来自 IB 的数据,但按照目前的方式,所有 Int 字段都必须填写,否则我会收到“找到可选的 nil”错误。我该如何设置才能不需要带有整数的字段?

@IBOutlet weak var diveSiteTextfield: UITextField!
@IBOutlet weak var diveDurationTextfield: UITextField!
@IBOutlet weak var diveMaxDepthTextfield: UITextField!
@IBOutlet weak var diveMaxDepthSymbolTextField: UITextField!
@IBOutlet weak var diveDateTextfield: UITextField!
@IBOutlet weak var diveTimeTextfield: UITextField!
@IBOutlet weak var diveBuddyTextfield: UITextField!
@IBOutlet weak var diveCityTextfield: UITextField!
@IBOutlet weak var diveCountryTextField: UITextField!
@IBOutlet weak var diveBodyOfWaterTextfield: UITextField!
@IBOutlet weak var diveLocationTextField: UITextField!
@IBOutlet weak var airTypeResultTextField: UITextField!
@IBOutlet weak var circuitTypeTextField: UITextField!
@IBOutlet weak var tankStartTextField: UITextField!
@IBOutlet weak var tankStartSymbolTextField: UITextField!
@IBOutlet weak var tankEndTextField: UITextField!
@IBOutlet weak var tankEndSymbolTextField: UITextField!
@IBOutlet weak var weightTextField: UITextField!
@IBOutlet weak var weightSymbolTextField: UITextField!
@IBOutlet weak var suitTypeTextField: UITextField!
@IBOutlet weak var entryTypeTextField: UITextField!
@IBOutlet weak var waterTypeTextField: UITextField!
@IBOutlet weak var waterTempTextField: UITextField!
@IBOutlet weak var waterTempSymbolTextField: UITextField!
@IBOutlet weak var currentTextField: UITextField!
@IBOutlet weak var visibilityTextField: UITextField!
@IBOutlet weak var airTempTextField: UITextField!
@IBOutlet weak var airTempSymbolTextField: UITextField!
@IBOutlet weak var weatherTextField: UITextField!
@IBOutlet weak var surfaceTextField: UITextField!
@IBOutlet weak var diveTypeTextField: UITextField!
@IBOutlet weak var diveMasterTextField: UITextField!
@IBOutlet weak var diveMasterIDTextField: UITextField!
@IBOutlet weak var diveCenterTextField: UITextField!
@IBOutlet weak var diveBoatTextField: UITextField!
@IBOutlet weak var diveTripTextField: UITextField!
@IBOutlet weak var diveNotesTextView: UITextView!



let insert = String(format:"INSERT INTO Dives (dive_number, dive_site, duration, max_depth, max_depth_symbol, dive_buddy, city, country, body_of_water, starting_tank, starting_tank_symbol, ending_tank, ending_tank_symbol, weight, weight_symbol, water_temp, water_temp_symbol, air_temp, air_temp_symbol, dive_master, dive_master_id, dive_center, boat_operator, trip_operator, dive_date, dive_time) VALUES ('\(Int(self.diveNumber))', '\(self.diveSiteTextfield.text!)', '\(Int(self.diveDurationTextfield.text!)!)', '\(Int(self.diveMaxDepthTextfield.text!)!)', '\(self.diveMaxDepthSymbolTextField.text!)', '\(self.diveBuddyTextfield.text!)', '\(self.diveCityTextfield.text!)', '\(self.diveCountryTextField.text!)', '\(self.diveBodyOfWaterTextfield.text!)', '\(Int(self.tankStartTextField.text!)!)', '\(self.tankStartSymbolTextField.text!)', '\(Int(self.tankEndTextField.text!)!)', '\(self.tankEndSymbolTextField.text!)', '\(Int(self.weightTextField.text!)!)', '\(self.weightSymbolTextField.text!)', '\(Int(self.waterTempTextField.text!)!)', '\(self.waterTempSymbolTextField.text!)', '\(Int(self.airTempTextField.text!)!)', '\(self.airTempSymbolTextField.text!)', '\(self.diveMasterTextField.text!)', '\(self.diveMasterIDTextField.text!)', '\(self.diveCenterTextField.text!)', '\(self.diveBoatTextField.text!)', '\(self.diveTripTextField.text!)', '\(self.diveDateTextfield.text!)', '\(self.diveTimeTextfield.text!)')")

最佳答案

您可以使用空合并运算符,例如

Int(self.airTempTextField.text!) ?? 0

这样你就可以处理没有得到任何输入的文本字段,也没有得到错误的输入,无法解析为整数。

关于sqlite - 允许 SQLite INSERT 对于 Integer 是可选的 (Swift 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41780085/

相关文章:

swift - 在下一个 UI View 出现之前获取用户身份验证

ios - 在自定义 View 的 Controller 中创建自定义 IBAction

swift - 表达式类型 '[Card]' 不明确,没有更多上下文将数组传递给函数

android - 应用程序第一次升级 sqlite 数据库时崩溃

mysql - 同时插入状态和选定值

android - 如何将联系人存储在android的本地数据库中?

ios - 使用通用加密的 swift 3.1 中的 DES/ECB/NoPadding

c++ - 将内存数据库保存到磁盘

java - parse.com 查询到 sqlite 查询

swift - 如何使用 CNContact.predicateForContacts 检索所有联系人?