【发布时间】:2015-01-03 05:06:12
【问题描述】:
我是一个使用 Swift 的完全新手,我在尝试做一些应该很简单的事情时感到头疼。
我有一个对象 Place ,它有一个 Double 类型的变量,称为距离。我正在使用以下代码来存储用户位置与其他一些位置之间的距离:
var obj = res as Place
let loc = CLLocation(latitude: obj.location.lat, longitude: obj.location.lng)
let dist = CLLocation.distanceFromLocation(loc)
obj.distance = dist // ERROR
最后一行向我显示一条错误消息“CLLocationDistance 不可转换为'Double'”。据我所知,CLLocationDistance 应该是 Double。我尝试使用
将该值转换为 double 和 floatDouble(dist)
和
obj.distance = dist as Double
但似乎没有任何效果。我将不胜感激。
【问题讨论】:
-
您的代码没有意义
distanceFromLocation不是 CLLocation 上的类方法 - 它是一个实例方法,因此您需要在现有的 CLLocation 对象上调用它。 -
Place的定义是什么?distance是如何声明的? -
CLLocationDistance被定义为typealias CLLocationDistance = Double,所以它们是完全等价的,也就是说你还有其他问题。 -
是的,你是对的。问题是我使用这种方法是错误的。距离被定义为 Double 但显然,该方法不打算像我那样使用。 Gregory Higley 的回答完美地描述了这种情况。