/ 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 }