2016-08-19 14 views
0

は、私がここにJSONファイルを持っている: 配列にJSONファイルの情報を入力して距離を計算する方法は?

 { 
     "People": [{ 
     "A1": "New York", 
     "B1": "ShoppingMall1", 
     "C1": "43.0757", 
     "D1": "23.6172" 
     }, 
     { 
     "A1": "London", 
     "B1": "ShoppingMall2", 
     "C1": "44.0757", 
     "D1": "24.6172" 
     }, { 
     "A1": "Paris", 
     "B1": "ShoppingMall3", 
     "C1": "45.0757", 
     "D1": "25.6172" 
     }, { 
     "A1": "Bern", 
     "B1": "ShoppingMall4", 
     "C1": "41.0757", 
     "D1": "21.6172" 
     }, { 
     "A1": "Sofia", 
     "B1": "ShoppingMall5", 
     "C1": "46.0757", 
     "D1": "26.6172" 

     } 
     ] 
     } 

と私は名前やショッピングモールの座標を取得し、配列にそれらを移入する必要があり、このJSONファイルから

。この配列をテーブルビューのセルで使用したいです。主な考え方は、ユーザーの現在地周辺の最寄りのショッピングモールを計算することです。ここで私はユーザーの現在地を計算します。

@IBAction func LocateMe(sender: AnyObject) { 
manager.delegate = self 
manager.desiredAccuracy = kCLLocationAccuracyBest 
manager.requestWhenInUseAuthorization() 
manager.startUpdatingLocation() 




    } 
    func locationManager(manager: CLLocationManager, didUpdateLocations  locations: [CLLocation]) { 
let userlocation: CLLocation = locations[0] as CLLocation 
manager.stopUpdatingLocation() 
let location = CLLocationCoordinate2D(latitude: userlocation.coordinate.latitude, longitude: userlocation.coordinate.longitude) 
let span = MKCoordinateSpanMake(0.5, 0.5) 
let region = MKCoordinateRegion(center: location, span: span) 

    } 
    let distanceMeters = userlocation.distanceFromLocation(CLLocation(latitude: ??,longitude: ??)) 
let distanceKilometers = distanceMeters/1000.00 
let roundedDistanceKilometers = String(Double(round(100 * distanceKilometers)/100)) + " km" 

しかし、私はショッピングモール座標の全てを取得し、また、私は新しい午前表ビューCells.Iのために使用する必要が配列にそれらを移入していないかthem.Iを比較する方法がわかりません迅速に誰かが私を助けることができれば嬉しいです。

私はあなたの質問に取り組んでいた、これは私の結果です

答えて

0

、私はあなたがそのようなSwiftyJSONとして1 JSON frameworkを使用することをお勧めしますが、あなたがしたい場合、私は知らないので、私はいずれかを使用していないすべての

ファースト最初に私たちは、このデータを解析し、JSONObject

に変換する必要があります後、このコード

let pathForPlist = NSBundle.mainBundle().pathForResource("JSON", ofType: "json")! 
let JSONData = NSData(contentsOfFile: pathForPlist) 

を使用して私たちのJSONをロードする必要があるので、

let JSONObject = try NSJSONSerialization.JSONObjectWithData(JSONData!, options: NSJSONReadingOptions.MutableContainers) as! [String:AnyObject] 

し、適切に辞書から初期化子を使用してオブジェクトに変換し、私たちのJSONは辞書

の配列が、これは完全なコードですので、我々はNSJSONReadingOptions.MutableContainersを使用することに注意してください、私はという名前のデータ型のクラスを定義することに注意してくださいObjectShopは後で

import UIKit 
import MapKit 

class ObjectShop 
{ 
    var A1 = "" 
    var B1 = "" 
    var C1 = "" 
    var D1 = "" 

    init?(dict:[String:AnyObject]) 
    { 
     A1 = dict["A1"] as! String 
     B1 = dict["B1"] as! String 
     C1 = dict["C1"] as! String 
     D1 = dict["D1"] as! String 
    } 

    func getCoordenate2D() -> CLLocationCoordinate2D 
    { 
     return CLLocationCoordinate2D(latitude: Double(self.C1)!, longitude: Double(self.D1)!) 
    } 
} 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let pathForPlist = NSBundle.mainBundle().pathForResource("JSON", ofType: "json")! 
     let JSONData = NSData(contentsOfFile: pathForPlist) 
     do 
     { 
      var objects = [ObjectShop]() 
      let JSONObject = try NSJSONSerialization.JSONObjectWithData(JSONData!, options: NSJSONReadingOptions.MutableContainers) as! [String:AnyObject] 
      print(JSONObject) 
      for dic in JSONObject["People"] as! [[String:AnyObject]] { 
       print(dic) 
       let objc = ObjectShop(dict: dic) 
       objects.append(objc!) 
      } 

      for object in objects { 
       print(object.getCoordenate2D()) 
      } 
     } 
     catch _ 
     { 

     } 

    } 

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


} 

私はこれがあなたの役に立てば幸い計算を支援するために、私は私のコードでSwifty JSONを使用しています、あなたは

+0

がHiのコードをお願いいたします質問がある場合は私に知らせてください。私はSwiftで新しいので、あなたに私のコードを送ってくれる電子メールアドレスなどを教えてもらえますか?本当に完了したいのですが、奇妙なエラーが発生します。テーブルビューのセルに送る –

+0

@IvanSosevこのメール[email protected]に私に連絡するか、GitHubで新しいレポを作成することができます。あなたのコードを見直して修正することができます –

+0

私はあなたにメールを送りました。どのようにgithubを使用するかわからない:( –

関連する問題