如何在Swift中正确使用conditionak运算符

时间:2016-12-28 23:53:47

标签: swift conditional-operator

我想重写下面的代码以使用条件运算符:

if indexPath.row == 0 {
  cell.indentationLevel = kIndentFDA
} else {
  cell.indentationLevel = kIndentCompleted
}

但是当我写这篇文章时:

indexPath.row == 0 ? cell.indentationLevel = kIndentFDA : cell.indentationLevel = kIndentCompleted

我收到此编译器警告:

  

“无法分配给'Int'类型的不可变表达式”

2 个答案:

答案 0 :(得分:2)

问题在于您不了解三元运算符 的含义。它不是在分支机构内执行任务;分支不是可执行语句。相反,分支是评估表达式;因此,您在赋值的右值使用三元运算符,分支值本身就是赋值。

所以,你正在写这个(这是无稽之谈):

indexPath.row == 0 ? cell.indentationLevel = kIndentFDA : cell.indentationLevel = kIndentCompleted

你的意思是:

cell.indentationLevel = indexPath.row == 0 ? kIndentFDA : kIndentCompleted

答案 1 :(得分:1)

我不知道警告它是什么,但它可能无法弄清楚应用运算符的顺序。这应该有用。

cell.indentationLevel = indexPath.row == 0? kIndentFDA:kIndentCompleted