Object 如何在swift中更新布尔变量的值?

Object 如何在swift中更新布尔变量的值?,object,swift,parse-platform,boolean,data-retrieval,Object,Swift,Parse Platform,Boolean,Data Retrieval,我花了三天时间想弄明白这一点。我可以很容易地用Java做我想做的事情,但一旦我尝试用Swift做它,Xcode就会给我带来困难 在本例中,我试图从Parse中检索一个布尔对象,该对象将告诉我用户的电子邮件是否已被验证。出于某种原因,每当我告诉代码检查对象是否为假时,checkEmail显然为零。同样值得注意的是,如果我println(checkEmail)紧跟在var checkEmail=User[“emailVerified”]之后作为Bool我得到了正确的布尔值(true或false) 看

我花了三天时间想弄明白这一点。我可以很容易地用Java做我想做的事情,但一旦我尝试用Swift做它,Xcode就会给我带来困难

在本例中,我试图从Parse中检索一个布尔对象,该对象将告诉我用户的电子邮件是否已被验证。出于某种原因,每当我告诉代码检查对象是否为假时,
checkEmail
显然为零。同样值得注意的是,如果我
println(checkEmail)
紧跟在
var checkEmail=User[“emailVerified”]之后作为Bool
我得到了正确的布尔值(true或false)

看起来,只要代码离开查询函数,
checkEmail
的值就会丢失

你知道我做错了什么吗

import UIKit

class RegisterEmail: UIViewController {

var checkEmail: Bool?

override func viewDidLoad() {
    super.viewDidLoad()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


 override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool {
    if identifier == "passEmail" {

        var query = PFUser.query()
        query.getObjectInBackgroundWithId("vFu93HatwL") {
            (User: PFObject!, error: NSError!) -> Void in
            if error == nil {
                NSLog("%@", User)
            } else {
                NSLog("%@", error)
            }

            let checkEmail = User["emailVerified"] as Bool


            println(checkEmail) //I get the correct value here

        }   

        println(checkEmail) //The value is lost here

        if (checkEmail == false) {

            let alert = UIAlertView()
            alert.title = "Error"
            alert.message = "The email you have provided has not been verified."
            alert.addButtonWithTitle("Dismiss")
            alert.show()

            return false
        }

        else {

            return true
        }
    }

    // by default, transition
    return true
}

}

您没有将新值指定给对象属性,而是将其指定给局部变量。去掉
let
关键字,它声明了一个新的局部变量,如下所示:

let checkEmail = User["emailVerified"] as Bool

您必须将checkEmail的声明移到query.getObjectInBackgroundHiId(“vFu93HatwL”){之外,这不是这里唯一的问题。getObjectInBackgroundHiId()是异步的,所以第二个日志仍然不正确,因为checkEmail此时没有值。等等……我知道一个愚蠢的问题,但如何更改变量的值……Xcode给了我一大堆BS错误。我知道,这是一个简单的概念(我可以用Java实现)..…checkEmail在我的代码顶部声明。如果您包括接收到的错误和位置,这会很有帮助。您可能声明了属性checkEmail,但您正在创建一个同名的新局部变量,该变量优先于局部范围中的属性。不必管BS错误,我发现了它,我只是把self.放在变量名前面。无论如何,回到主题上,即使我删除了变量的局部声明,我仍然丢失了数据。不起作用。我收到一个错误,说我需要添加“self”。当我这样做时,它仍然不能解决问题。