布尔与迅速
这真是令人困惑。 有没有人有任何想法?
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
被调用。 我不能重新分配值回到真正的…
Obj-C上的东西如此简单,现在变得如此的令人沮丧…
你有两个问题。
一,你正在使用==
(它testing相等),你应该使用=
(它分配一个值)。 二,你正在声明一个常量,然后试图给它赋一个新的值。 你需要声明一个variables。
var viewHasMovedToRight = false ... viewHasMovedToRight = true
另外, if
条件更容易理解,大多数人会发现:
if !viewHasMovedToRight {
如果要颠倒if
子句的顺序就更简单了:
if viewHasMovedToRight { viewHasMovedToRight = false ... } else { viewHasMovedToRight = true ... }
let viewHasMovedToRight = false
let viewHasMovedToRight == false
编辑:它看起来像你使用==
而不是=
无论你设置布尔值。
@George,你应该使用set操作符
let viewHasMovedToRight = false
不是比较运营商
let viewHasMovedToRight == false
新手在这里。 我以前常常犯这个错误,用=分配和比较。 使用=分配和==比较