2016-03-10 6 views
0

Недавно я сделал одноэкранное веб-приложение с использованием PHP и AJAX. Я хочу перенести это приложение в iOS и начал учить себя Swift. У меня было приложение, отлично работающее в Swift 1, но так как я обновился до xCode 7.2 и Swift 2, чтобы попробовать приложение на своем iPhone с iOS 9, код был совершенно нефункциональным. Отсюда у меня теперь есть новый код, и, насколько я вижу, он должен работать, но я получаю пустой ответ. Что не так?Swift 2, Parsing 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 Я понимаю, я не могу найти решение, чтобы заставить его работать. Я говорю, что я не понимаю, как получить данные json из URL-адреса –

+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

Использование NSURLConnectionDelegate или AFNetworking для сетевых запросов. Ниже приведена реализация с использованием 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]? Позвольте мне исправить это для u. –