我正在尝试解析其中包含这些值的可选值
Optional(UITableViewCell: ox7ff2f9cfbc80; frame = (0 0; 414 44); text = 'Clarity'; autoresize = W; layer = <CALayer:0x7ff2f9cfb250>>)
并希望抓住“Clarity&#39;”的文本部分。打印出另一行。如果这是可能的,请告诉我,因为我是Swift的新手!谢谢!
以下是我如何创建表格单元格
我有一个歌曲列表
tracks = [Clarity, Freak-a-Leek, What's My Age Again?, All The Small Things, Bandz A Make Her Dance, Cant Tell Me Nothing, Slow Jamz, Hate It Or Love It, Dark Horse, Teenage Dream, In Too Deep, Just Hold On, We're Going Home, Energy, Fat Lip]
并通过执行以下操作创建tableviewcells
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
var cell = tableView.dequeueReusableCellWithIdentifier("cell") as? UITableViewCell
cell?.textLabel?.text=self.tracks[indexPath.row]
return cell!
}
以下是我获取可选值的方法
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)
println("You selected cell #\(indexPath.row)!")
let Cell = tableView.cellForRowAtIndexPath(indexPath)
}
答案 0 :(得分:3)
您可以使用可选链接到达可选项以获取特定字段,然后检查链是否具有if let
的值:
if let txt = optionalCell?.text {
println(txt)
}
// if you want to, add an else
else {
// to handle the optional chain being nil
}
optionalCell?.text
表示:如果optionalCell
有值,请获取text
属性,否则返回nil
。然后,if let
“展开”可选项,如果可选项包含一个,则将txt
设置为常规值。如果您希望代码处理不存在,则可以添加else
子句。
如果你想在nil
(例如,一个空字符串)的情况下使用默认值,那么有一个简写:
let txt = optionalCell?.text ?? "Blank"
??
在左侧采用可选值,在右侧采用默认值,并计算为可选中的值,如果是nil
则为默认值。
您可能会看到人们建议有时使用!
。 不遵循他们的建议。 !
是一个“强制解包”,如果你打开的可选项是nil
,你的程序将退出一个断言。 !
有合法用途,但它们非常罕见,更常见的是当有更好的解决方案时人们误推荐它