在我斯威夫特类我有以下几点:斯威夫特:如何转换可选(“可选(STR)”)为Int
var detailItem: Task?
var cellData:[String:String] = [:]
/* prepareForSegue not called before */
if (detailItem == nil) {
self.cellData = ["id":"", "titolo":"", "oggetto":"", "check_mail":"", "progetto_nome":"", "assegnato_a":"", "richiesto_da":"", "priorita":"", "termine_consegna":"", "stato":"Aperto"]
}
/* prepare for segue has been called */
else {
self.cellData["id"] = String(stringInterpolationSegment: self.detailItem!.id)
self.cellData["titolo"] = self.detailItem!.titolo
self.cellData["oggetto"] = self.detailItem!.oggetto
if (self.detailItem!.check_mail) {
self.cellData["check_mail"] = "true"
}
else {
self.cellData["check_mail"] = "false"
}
self.cellData["progetto_nome"] = self.detailItem!.progetto_nome
self.cellData["assegnato_a"] = self.detailItem!.assegnato_a
self.cellData["richiesto_da"] = self.detailItem!.richiesto_da
self.cellData["priorita"] = self.detailItem!.priorita
self.dateFormatter.dateFormat = "yyyy-MM-dd"
self.cellData["termine_consegna"] = self.dateFormatter.stringFromDate(self.detailItem!.termine_consegna)
self.cellData["stato"] = self.detailItem!.stato
var editButton:UIBarButtonItem = UIBarButtonItem(title: "Modifica", style: UIBarButtonItemStyle.Plain, target: self, action: "switchMode:")
self.navigationItem.rightBarButtonItem = editButton
}
,可在任务类的某些属性自选(如ID)和所以他们可能是零。 当我需要执行任务更新操作时,我需要从cellData中检索数据,创建一个任务对象并使用它来更新需要一个id的数据库。所以这是我做的:
var taskToUpdate = Task(id: self.cellData["id"]!.toInt(),
...)
的问题是,ID总是设置为零。我曾尝试:
println(self.cellData["id"]!.toInt())
和我所得到的是这样的:
Optional("Optional(102)").
这是将其转换诠释了正确的方法是什么?
'toInt()'本身返回一个可选项,所以你必须强制解包到底。 – Sulthan
@Sulthan:我已经尝试了self.cellData [“id”] !. toInt()!但我得到“致命的错误:意外地发现零,而解包可选值”,虽然println(self.cellData [“ID”]!)显示可选(54)...我不明白,真的:( –