布尔与迅速

这真是令人困惑。 有没有人有任何想法?

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 

新手在这里。 我以前常常犯这个错误,用=分配和比较。 使用=分配和==比较