/ Caffinator / Location.swift
Location.swift
 1  //
 2  //  Location.swift
 3  //  Caffinator
 4  //
 5  //  Created by Luigi Mangione on 3/19/17.
 6  //  Copyright © 2017 AppRoar Studios. All rights reserved.
 7  //
 8  
 9  import UIKit
10  import MapKit
11  import CoreLocation
12  
13  class Location: NSObject, MKAnnotation {
14      var coordinate: CLLocationCoordinate2D
15      var name: String
16      var address: String
17      var phone: String
18      var hours: String
19      var menu: String
20      
21      init(name: String, address: String, phone: String, hours: String, menu: String){
22          self.coordinate = CLLocationCoordinate2D(latitude: 0, longitude: 0)
23          self.name = name
24          self.address = address
25          self.phone = phone
26          self.hours = hours
27          self.menu = menu
28      }
29      
30      static func dataToLocation(_ data : Data?) -> [Location]? {
31          // Inspired by: https://www.raywenderlich.com/110458/nsurlsession-tutorial-getting-started
32          var locationResults = [Location]()
33          do {
34              if let data = data {
35                  if let response = try JSONSerialization.jsonObject(with: data, options:JSONSerialization.ReadingOptions(rawValue:0)) as? [String: AnyObject] {
36                      if let array: AnyObject = response["locations"] {
37                         for locDictionary in array as! [AnyObject] {
38                          if let locDictionary = locDictionary as? [String: AnyObject], let address = locDictionary["address"] as? String {
39                              // Parse the search result
40                              let name = locDictionary["name"] as? String
41                              let phone = locDictionary["phone"] as? String
42                              let hours = locDictionary["hours"] as? String
43                              let menu = locDictionary["menu"] as? String
44                              locationResults.append(Location(name: name!, address: address, phone: phone!, hours: hours!, menu: menu!))
45                          } else {
46                              print("Not a dictionary")
47                          }
48  
49                          }
50                      }
51                      //print (locationResults)
52                      return locationResults
53                  }
54              }
55          } catch let error as NSError {
56              print("Error parsing results: \(error.localizedDescription)")
57          }
58          return nil
59      }
60      
61      func addressToCoord() -> Void {
62          let coder = CLGeocoder()
63          coder.geocodeAddressString(address, completionHandler: {(placemarks: [CLPlacemark]?, error: Error?) in
64                  self.coordinate = (placemarks![0].location?.coordinate)!
65              })
66          
67      }
68      
69  
70  }