带有swift的布尔值

时间:2014-10-22 18:09:14

标签: ios swift

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

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上如此容易的东西是如此令人沮丧......

4 个答案:

答案 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)

新手在这里。 我曾经一直犯这个错误,使用=既可以分配也可以比较。 使用=来分配和==来比较