Ошибка не требует пояснений: вы пытаетесь установить String?
вместо CLLocationDegrees
, но вы даже можете использовать тип Double
.
Есть несколько способов исправить это:
1) Вы можете изменить определение своего класса следующим образом:
class Job {
// Change distance to Double and set a default value instead of optional
var distance: Double = 0.0
let ref: DatabaseReference!
// Change the init
init(distance: Double = 0.0) {
self.distance = distance
ref = Database.database().reference().child("jobs").childByAutoId()
}
//You have to change all your distance to Double
init(snapshot: DataSnapshot){
ref = snapshot.ref
if let value = snapshot.value as? [String : Any] {
// So change this cast
distance = value["distance"] as Double
}
}
}
2) Вы можете попробовать сыграть из String? в Double , но я не рекомендую это.
В любом случае, вот как вы можете это сделать:
if let dist = Double(job!.distance){
let myBuddysLocation = CLLocation(latitude: dist, longitude: dist) -> Error Appears in this Line
let distance = myLocation.distance(from: myBuddysLocation) / 1000
print(String(format: "The distance to my buddy is %.01fkm", distance))
}