gpt4 book ai didi

ios - 没有在 bool 函数中获取/设置正确的返回值

转载 作者:行者123 更新时间:2023-11-28 13:20:19 31 4
gpt4 key购买 nike

这是我下面的快速代码。默认情况下,success 变量设置为 false。从它的外观来看,success 变量永远不会在对象内部更新。因此返回值总是假的。关于我应该如何解决这个问题的任何提示?

更新:我添加了 println 以查看逻辑是否正在通过,它是。

class Auth {
func authUser(email: String, password: String) {
var success : Bool = false
let parameters = [
"user1": [
"adminEmail": email,
"adminPassword": password
]
]
var defaults = NSUserDefaults.standardUserDefaults()
Alamofire.request(.POST, loginURL, parameters: parameters).responseJSON { (_, _, object, error) -> Void in
if(object != nil) {
if(JSON(object!)["success"].asBool == true) {
println("user signed in")
self.authSuccess()
}
}
}

}

func authSuccess() -> Bool {
self.success = true
println(success) // this does not get printed out.
return success
}
}

ViewController.swift

@IBAction func signInButtonPressed(sender: AnyObject) {
var auth = Auth()
auth.authUser(emailTxtField.text, password: pwdTxtField.text)
println(auth.success)
}

刚开始使用 swift。所以任何指示都是有帮助的。

最佳答案

您的 Alamofire 请求异步完成 - 请求完成后执行闭包,但是此时 authUser方法已经返回,值为 false .

authUser 不可能返回成功/失败 - 您需要从闭包中调用另一个方法来处理成功/失败

您不需要检查 auth flag 以更新标签(尽管您可能想在应用程序的其他地方使用该属性,但这很好)。当authSuccess被称为你可以简单地更新标签。您需要将更新分派(dispatch)到主队列中的 UI 元素 - 您的 authSuccess将在后台线程上执行,所以使用

func authSuccess()  {
self.success = true
dispatch_async(dispatch_get_main_queue()) {
self.myLabel="Authenticaton successful"
}

}

您还应该处理闭包中的其他情况并调用 authFail或者如果它失败以更新 UI 并向用户提供反馈。

关于ios - 没有在 bool 函数中获取/设置正确的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26520286/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com