Swift3:如何使用PHP和Swift 3从外部数据库加载数据

时间:2017-06-27 04:46:02

标签: uitableview swift3

我试图通过使用PHP从外部数据库中获取数据来加载表。我在服务器上有脚本,并且能够获取数据。我正在努力寻求帮助并理解逻辑,但我仍然无法得到它。

目前,我只设置了我的tableview,但没有数据。

请告诉我如何获取数据。

由于

代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var group = [Group]()

    @IBOutlet weak var tableview: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        tableview.reloadData()
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }



    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        //return myarray.count
        return 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "groupCell", for: indexPath) as! UITableViewCell
       // cell.textLabel?.text = myarray[indexPath.item]
        return cell
    }

}

代码:(如何在表格视图中显示数据?)

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

//let myarray = ["item1", "item2", "item3"]



var group = [Group]()

@IBOutlet weak var tableview: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    let url = URL(string: "http://www.myurl/myfile.php")

    let task = URLSession.shared.dataTask(with: url! as URL) { data, response, error in

        guard let data = data, error == nil else { return }

        print(NSString(data: data, encoding: String.Encoding.utf8.rawValue))
    }

    task.resume()        
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    tableview.reloadData()
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}



func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    //return myarray.count
    return 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "groupCell", for: indexPath) as! UITableViewCell
   // cell.textLabel?.text = myarray[indexPath.item]
    return cell
}

}

2 个答案:

答案 0 :(得分:1)

以下是从iOS方通过Web服务在iOS上加载数据并从服务器端创建Web服务的教程。

为iOS应用程序创建一个简单的PHP / MySQL Web服务。

  

https://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app

从iOS应用程序调用该Web服务

  

http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-service

答案 1 :(得分:1)

您需要使用以下代码

根据您的回复创建数组或词典

您需要将字符串传递给您在print语句中使用的这些func。

如果响应以字典形式返回

func convertToDictionary(text: String) -> [String: Any]? {
    if let data = text.data(using: .utf8) {
        do {
            return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
        } catch {
            print(error.localizedDescription)
        }
    }
    return nil
}

从字典中获取数组以与tableview绑定。

如果响应返回为数组

func convertToArray(text: String) -> [Any]? {
        if let data = text.data(using: .utf8) {
            do {
                return try JSONSerialization.jsonObject(with: data, options: []) as? [Any]
            } catch {
                print(error.localizedDescription)
            }
        }
        return nil
    }

然后将此数组中的数据绑定到tableView。