Object 如何在swift中更新布尔变量的值?
我花了三天时间想弄明白这一点。我可以很容易地用Java做我想做的事情,但一旦我尝试用Swift做它,Xcode就会给我带来困难 在本例中,我试图从Parse中检索一个布尔对象,该对象将告诉我用户的电子邮件是否已被验证。出于某种原因,每当我告诉代码检查对象是否为假时,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) 看
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”。当我这样做时,它仍然不能解决问题。