我的函数总是在第一次返回false

ZbadhabitZ

这可能是一个晦涩的问题,但是我似乎无法弄清楚这里正在发生什么。我有一个“登录”功能,可以根据API检查用户名和密码。由于某种原因,第一次调用此函数将返回false,但是如果我第二次调用此函数,则假定输入了正确的凭据,它将返回正确的true。

这是函数:

if testLogin(usernameTextField.text!, password: passwordTextField.text!) {
            performSegueWithIdentifier("dismissLogin", sender: self)
        } else {
            let alert = UIAlertView()
            alert.title = "Login Problem"
            alert.message = "Wrong username or password."
            alert.addButtonWithTitle("Dismiss")
            alert.show()
        }
    }

TESTLOGIN功能将出现在这里;

func testLogin(username: String, password: String) -> Bool {

    let jsonString = "{\"username\":\"\(username)\",\"password\":\"\(password)\"}"
    let myURL = "http://myurl.com/api/login.php"

    let url:NSURL = NSURL(string: myURL)!
    let session = NSURLSession.sharedSession()

    let request = NSMutableURLRequest(URL: url)
    request.HTTPMethod = "POST"
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData

    request.HTTPBody = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")

    let task = session.dataTaskWithRequest(request) {
        (
        let data, let response, let error) in

        guard let _:NSData = data, let _:NSURLResponse = response  where error == nil else {
            print("error")
            return
        }

        do {
            let json:AnyObject? = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)

            if let result = json as? [String: AnyObject] {
                if let status = result["Status"] as! Int? {
                    if status == 200 {
                        self.loginCheck = true
                    } else {
                        self.loginCheck = false
                    }
                }
            }
        } catch {
            print(error)
        }            
    }   
    task.resume()
    return loginCheck
}

抱歉,长度不够。但是,我似乎无法理解,为什么第一次调用testLogin返回false,而第二次调用true则返回true。好像该函数没有足够快地调用网站并返回false,但是第二次我调用该函数时,它有时间检查该网站吗?

弗拉基米尔(Vladimir)

您的方法testLogin不正确。方法dataTaskWithRequest是异步的。您需要创建两个回调successfailure(关闭)。如果请求完成,将调用该方法。看看这个https://github.com/Alamofire/Alamofire

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

link_to ...远程:true,方法:发布总是在第一次尝试时失败

来自分类Dev

WLST连接到管理端口总是在第一次尝试时失败

来自分类Dev

WLST连接到管理端口总是在第一次尝试时失败

来自分类Dev

Ubuntu UFW防火墙总是在第一次阻止端口

来自分类Dev

谷歌图表并不总是在第一次尝试时加载

来自分类Dev

null 条件运算符是否总是在第一次出现 null 时中断?

来自分类Dev

ASP Core - jquery 总是从第一次点击的控件返回 data-url

来自分类Dev

第一次读取文件后,能否让StreamReader.EndOfStream返回false?

来自分类Dev

函数节点中的 for 循环仅返回第一次迭代

来自分类Dev

我的getToken函数在第一次调用时不起作用

来自分类Dev

为什么我的regex函数仅在第一次运行?

来自分类Dev

第一次满足返回值条件

来自分类Dev

第一次满足返回值条件

来自分类Dev

Cloudinary第一次尝试返回空URL

来自分类Dev

对于每个仅返回第一次迭代

来自分类Dev

函数在第一次单击时未执行

来自分类Dev

LAPACK函数在第一次迭代后变慢

来自分类Dev

jquery .load()函数仅在第一次工作

来自分类Dev

尝试递归问题(我第一次)

来自分类Dev

IE 8不想让我第一次下载

来自分类Dev

我循环只经过第一次迭代

来自分类Dev

我第一次使用 PHPMailer

来自分类Dev

函数在第一次调用时返回字符串,在随后的调用中返回一个对象

来自分类Dev

为什么setTimeout()第一次只运行一次我的代码?

来自分类Dev

蓝图初始化,我可以在第一次请求蓝图之前运行一个函数

来自分类Dev

如何仅在第一次调用函数时返回字符串,此后未定义

来自分类Dev

为什么第一次进行微基准测试总是最慢?

来自分类Dev

第一次调用 AWS_IAM Secured API 端点总是未经授权

来自分类Dev

tx_news:详细信息视图总是呈现第一次查看的文章

Related 相关文章

  1. 1

    link_to ...远程:true,方法:发布总是在第一次尝试时失败

  2. 2

    WLST连接到管理端口总是在第一次尝试时失败

  3. 3

    WLST连接到管理端口总是在第一次尝试时失败

  4. 4

    Ubuntu UFW防火墙总是在第一次阻止端口

  5. 5

    谷歌图表并不总是在第一次尝试时加载

  6. 6

    null 条件运算符是否总是在第一次出现 null 时中断?

  7. 7

    ASP Core - jquery 总是从第一次点击的控件返回 data-url

  8. 8

    第一次读取文件后,能否让StreamReader.EndOfStream返回false?

  9. 9

    函数节点中的 for 循环仅返回第一次迭代

  10. 10

    我的getToken函数在第一次调用时不起作用

  11. 11

    为什么我的regex函数仅在第一次运行?

  12. 12

    第一次满足返回值条件

  13. 13

    第一次满足返回值条件

  14. 14

    Cloudinary第一次尝试返回空URL

  15. 15

    对于每个仅返回第一次迭代

  16. 16

    函数在第一次单击时未执行

  17. 17

    LAPACK函数在第一次迭代后变慢

  18. 18

    jquery .load()函数仅在第一次工作

  19. 19

    尝试递归问题(我第一次)

  20. 20

    IE 8不想让我第一次下载

  21. 21

    我循环只经过第一次迭代

  22. 22

    我第一次使用 PHPMailer

  23. 23

    函数在第一次调用时返回字符串,在随后的调用中返回一个对象

  24. 24

    为什么setTimeout()第一次只运行一次我的代码?

  25. 25

    蓝图初始化,我可以在第一次请求蓝图之前运行一个函数

  26. 26

    如何仅在第一次调用函数时返回字符串,此后未定义

  27. 27

    为什么第一次进行微基准测试总是最慢?

  28. 28

    第一次调用 AWS_IAM Secured API 端点总是未经授权

  29. 29

    tx_news:详细信息视图总是呈现第一次查看的文章

热门标签

归档