这真令人困惑。有没有人有任何想法?
let viewHasMovedToRight == false //initially I want this to be false
然后
func moveViewToRight(sender: UIButton!) {
if viewHasMovedToRight == false {
viewHasMovedToRight == true;
UIView.animateWithDuration(
0.75,
animations: {},
completion: { (value: Bool) in
println(" moved")
}
)
}
else {
viewHasMovedToRight == false;
UIView.animateWithDuration(
0.75,
animations:{},
completion:{ (value: Bool) in
println("not moved")
}
)
}
// println("move view")
}
仅调用第一个if
。
我无法将值重新分配给true ...
现在使用swift在Obj-C上如此容易的东西是如此令人沮丧......
答案 0 :(得分:21)
你有两个问题。
一,你正在使用==
(测试相等性)你应该使用=
(它分配一个值)。二,您声明一个常量,然后尝试为它分配一个新值。你需要声明一个变量。
var viewHasMovedToRight = false
...
viewHasMovedToRight = true
此外,大多数人会发现这种if
条件更容易理解:
if !viewHasMovedToRight {
如果你要颠倒if
条款的顺序,那就更简单了:
if viewHasMovedToRight {
viewHasMovedToRight = false
...
} else {
viewHasMovedToRight = true
...
}
答案 1 :(得分:5)
let viewHasMovedToRight = false
不是let viewHasMovedToRight == false
编辑:看起来您在设置布尔值的任何地方都使用==
而不是=
。
答案 2 :(得分:2)
@George, 你应该使用set operator
let viewHasMovedToRight = false
不是比较运算符
let viewHasMovedToRight == false
答案 3 :(得分:0)
新手在这里。 我曾经一直犯这个错误,使用=既可以分配也可以比较。 使用=来分配和==来比较