如何使用结构数组

时间:2017-01-24 13:58:42

标签: ios ipad

我想使用结构数组中的纬度和逻辑值来表示折线。

您可以在视图中使用json中的list [1] .latitude值,但如果您尝试使用上面的override func viewDidLoad()中的list [1] .latitude值,则会出现错误。 如何将此值用作折线的纬度和经度值?

Swift Source

import UIKit
import GoogleMaps

class TableController: UIViewController, GMSMapViewDelegate , UITableViewDataSource, UITableViewDelegate{
    @IBOutlet weak var viewMap: GMSMapView!

    @IBOutlet weak var listTableView: UITableView!

    //JSON담을 구조
    var list:[MyStruct] = [MyStruct]()

    struct MyStruct
    {
        var index = ""
        var ip = ""
        var latitude = ""
        var longitude = ""
        var zonename = ""

        init(_ index:String, _ ip:String, _ latitude:String, _ longitude:String, _ zonename:String)
        {
            self.index = index
            self.ip = ip
            self.latitude = latitude
            self.longitude = longitude
            self.zonename = zonename
        }
    }

    override func viewDidLoad() {

        super.viewDidLoad()

        // set initial location
        let camera: GMSCameraPosition = GMSCameraPosition.camera(withLatitude: 37.209037, longitude: 126.976370, zoom: 16.0)
        viewMap.camera = camera
        let count: Int = 0
        //폴리라인
        let path = GMSMutablePath()
        path.add(CLLocationCoordinate2DMake(37.209037, 126.976370))
        path.add(CLLocationCoordinate2DMake(37.211643, 126.972444))
        path.add(CLLocationCoordinate2DMake(37.211457, 126.972147))

        let polyline = GMSPolyline(path: path)
        polyline.strokeWidth = 6.0
        polyline.map = viewMap

        listTableView.dataSource = self
        listTableView.delegate = self

        get_data("http://192.168.0.11/fence.php")
     } 

    func get_data(_ link:String)
    {
        let url:URL = URL(string: link)!
        let session = URLSession.shared

        let request = URLRequest(url: url)

        let task = session.dataTask(with: request, completionHandler: {
            (data, response, error) in

            self.extract_data(data)

        })

        task.resume()
    }


    func extract_data(_ data:Data?)
    {
        let json:Any?

        if(data == nil)
        {
            return
        }

        do{
            json = try JSONSerialization.jsonObject(with: data!, options: [])
        }
        catch
        {
            return
        }

        guard let data_array = json as? NSArray else
        {
            return
        }


        for i in 0 ..< data_array.count
        {
            if let data_object = data_array[i] as? NSDictionary
            {
                if let data_index = data_object["index"] as? String,
                    let data_ip = data_object["Ip"] as? String,
                    let data_latitude = data_object["Latitude"] as? String,
                    let data_longitude = data_object["Longitude"] as? String,
                    let data_Zonename = data_object["ZoneName"] as? String
                {
                    list.append(MyStruct(data_index, data_ip, data_latitude, data_longitude, data_Zonename))
                }

            }
        }


        refresh_now()


    }

    func refresh_now()
    {
        DispatchQueue.main.async(
            execute:
            {
                self.listTableView.reloadData()

        })
    }



    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {

        return list.count
    }

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)


        cell.textLabel?.text = list[indexPath.row].zonename + " : " +  list[indexPath.row].latitude


        return cell
    }


    override func didReceiveMemoryWarning() {

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

}

0 个答案:

没有答案