2016-03-10 69 views
0

我最近使用PHP和AJAX制作了一个基于Web的单屏应用程序。我想将这个应用移植到iOS上,并开始自学Swift。我的应用程序在Swift 1中完美运行,但是由于我更新了xCode 7.2和Swift 2,因此我可以在iOS 9上使用我的iPhone尝试应用程序,但代码完全无法使用。从这里开始,我有了新的代码,并且据我所知,它应该可以工作,但我得到了一个空的回应。哪里不对?Swift 2,解析JSON,空响应

import UIKit 
import Foundation 

class LoginViewController: UIViewController, UITextFieldDelegate { 



    @IBOutlet weak var username_textField: UITextField! 

    @IBOutlet weak var password_TextFieldOutlet: UITextField! 


    @IBAction func password_TextFieldAction(sender: AnyObject) { 


     let username = username_textField.text 
     let password = password_TextFieldOutlet.text 
     var urlRequest = "~~URL~~/login.php?username=\(username)&password=\(password)" 



    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

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


} 

的想法是我是从数据库中获取我的数据,看看是否“成功”(一个布尔值的分贝值)返回1或0。如果它返回1,然后执行一个原因请看下页如果没有,则创建一条警告,提示用户名和密码不正确。

预先感谢您!

+0

但你的代码不这样做!它只是初始化变量。 –

+0

@ChanchalRaj我明白了,我找不到解决方案使其工作 - 我说我不明白如何从URL中检索json数据 –

+0

什么是您的'password_TextFieldAction'?它是一个按钮点击或触摸textField == – Lee

回答

0
  1. 创建URL

    let url = NSURL(string: "http://google.com")

  2. 创建请求

    let request = NSMutableUrlRequest(url: url!)

  3. 添加数据和请求方法

    request.HTTPMethod = "POST" request.HTTPBody = "username=\(username text.text!)".dataUsingEncoding(NSUTF8StringEncoding)

  4. 发送连接

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { 
        (response, data, error) -> Void in 
    if data != nil && error == nil { 
        if let response = String(data: data!, encoding: NSUTF8StringEncoding) { 
          //here is where you now have your response 
        } 
    }) 
    
+0

建议使用NSURLSession而不是NSURLConnection。 – ryantxr

+0

@ryantxr从php文件发送的编码是JSON,虽然 –

0

使用NSURLConnectionDelegateAFNetworking联网请求。以下是使用NSURLConnection的实现。

我为你实施了LoginViewController班。 将以下loginButtonAction挂钩到您的用户界面上的“登录/登录/完成”按钮。

import UIKit 
import Foundation 
class LoginViewController: UIViewController, NSURLConnectionDelegate { 
@IBOutlet weak var username_textField: UITextField! 
@IBOutlet weak var password_TextFieldOutlet: UITextField! 
@lazy var data = NSMutableData() 

override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    startConnection() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

func startConnection(){ 
let username = username_textField.text 
    let password = password_TextFieldOutlet.text 
    let urlPath: String = "~~URL~~/login.php?username=\(username)&password=\(password)" 
    var url: NSURL = NSURL(string: urlPath) 
    var request: NSURLRequest = NSURLRequest(URL: url) 
    var connection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false) 
    connection.start() 
} 

func connection(connection: NSURLConnection!, didReceiveData data: NSData!){ 
    self.data.appendData(data) 
} 

func loginButtonAction(sender: UIButton!){ 
    startConnection() 
} 

func connectionDidFinishLoading(connection: NSURLConnection!) { 
    var err: NSError 
    var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary 
//Here I am printing the results, you can check the results and based on response Bool you can perform segue to next view controller. 
    println(jsonResult) 

} 
} 
+0

不幸的是,这会导致多个错误 –

+0

您可以将您的代码发送到[email protected]吗?让我为你解决它。 –