Swift:如何查询外部数据库进行登录


Swift: How to query an external database to perform login?

我是Swift和iOS的新手,为了考试,我正在开发一个小的iOS应用程序。首先要做的是登录:在我的视图控制器中,我有2个文本字段(login, password)和一个"Sign in"按钮。我创建了一个具有属性的swift用户类(根据存储在数据库中的字段)。然后我创建了一个登录服务swift类,其中(按照Youtube教程)有这两个重要的方法:

func getUser(username:String, password:String, callback:(NSDictionary) -> ()) {
    self.settings.webServerLoginURL = "'(self.settings.webServerLoginURL)?username='(username)&password='(password)"
    println(self.settings.webServerLoginURL)
    self.requestLogin(self.settings.webServerLoginURL, callback: callback)
}
func requestLogin(url:String, callback:(NSDictionary) -> ()) {
    var nsURL = NSURL(string: url)
    let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL!) {
        (data, response, error) in
        var error:NSError?
        var response = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as! NSDictionary
        callback(response)
    }
    task.resume()
}

,其中URL应该像这样:

localhost:8888/excogitoweb/loginM.php?username=xxx&password=xxx

现在我想尝试这个东西所以在我的视图控制器swift文件中,我将按钮链接到以下方法:

@IBAction func doLogin(sender : AnyObject) {
    self.service = LoginService()
    self.service.getUser(self.userTextField.text, self.passwordTextField.text)
}

我不理解的事情是如何调用该函数,其第三个参数应该是回调,以及总体如何管理响应数据以检查登录是否正确:如果是这样,php文件应该返回(在查询数据库后)用户的信息

echo json_encode()

,所以我应该控制返回的数据是否为空。你能帮助我或者链接一些更有用的教程吗?

对于回调,让Xcode帮助您使用其自动完成功能。

开始键入你的方法调用:

self.requestLogin

并接受自动完成。

现在你看到Xcode高亮显示了回调部分;点击一次选中它,然后按ENTER键,Xcode会自动正确格式化调用,如下所示:

self.requestLogin(self.settings.webServerLoginURL, { (myDictionary) -> () in
    println(myDictionary)
})