2016-08-19 3 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에 사용할 필요가 배열로를 채울하지 않는 방법, 맘을 비교하는 방법을 모른다 신속하게 누군가가 저를 도울 수 있으면 기뻐할 것입니다.

답변

0

나는 당신의 질문에 일하고 있었다 이것이 내 결과입니다, 당신이 하나 JSON framework 같은 SwiftyJSON을 사용하지만, 당신이 원한다면 내가 모르기 때문에 내가 어떤을 사용하지 않는 것이 좋습니다 모든

우선 에, 그래서

먼저 우리는 우리가이 데이터를 분석하고 된 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은 사전

이 전체 코드, I라는 이름의 데이터 유형에 대한 클래스를 정의 참고 인의 배열이기 때문에 우리가 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. 
    } 


} 

나는이 당신을 도움이되기를 바랍니다 계산을 돕기 위해, 나는 내 코드에서 스위프 티 JSON을 사용하고, 당신이

+0

안녕 코드 주셔서 감사합니다 어떤 질문이 있으면 알려 주시기. 내가 Swift에서 새롭기 때문에 이메일 주소 나 다른 곳에서 코드를 보내 줄 수 있겠습니까? 정말 완성하고 싶지만 이상한 오류가납니다. 인쇄하는 대신 이해할 수 없습니다. –

+0

@IvanSosev이 메일 [email protected]에 저에게 연락하거나 GitHub에 새 레포를 만들 수 있습니다. 코드를 검토하고 수정 할 수 있습니다. –

+0

이메일을 보냈습니다. github를 사용하는 방법을 모른다 : ( –

관련 문제