Mar*_*son 1 cllocation ios swift
我正试图在Swift中获得GPS速度.我已经把一切都搞定了,现在我正在尝试做一些计算.我想将MS"字符串"转换为KMH.所以我试图将类型转换为long,但我无法让它工作.
我试过这个:
var ms: long?
ms = LocationManager.location.speed
Run Code Online (Sandbox Code Playgroud)
但我得到"CLLocationspeed不能长期转换"
我是iOS编程和Swift的新手,所以我不知道如何解决这个问题.
你应该首先阅读Swift Book,但是:
long在Swift中不是标准类型(不知道你在哪里找到了:).一个适当的整数类型可以使用Int(除非确切的大小对你很重要 - 但它可能不重要).但CoreLocation中的CLLocationSpeed是一个类型Double,你应该坚持使用它来进行速度计算.
在Swift中,类型之间的大多数转换都不会隐式发生.如果你真的想Double成为一个Int,你需要明确转换它,即let ms = Int(LocationManager.location.speed).
当你来自C语言时,这感觉就像一种痛苦.但背后有充分的理由.例如,当您将浮点数分配给整数类型时,浮点数的小数部分会发生什么?您是否忘记了您的函数返回浮点数并且意外引入了截断错误?
为了弥补这一点,Swift也有类型推断.因此,除非您想明确控制类型,否则您甚至不必给它们:
// type of ms is automatically inferred to be CLLocationSpeed (alias for Double)
let ms = LocationManager.location.speed
// 3.6 floating-point literal is automatically converted to appropriate type
// type and kph is automatically a Double
let kph = ms * 3.6
Run Code Online (Sandbox Code Playgroud)
大多数情况下,您不需要提供类型,只需将其从上下文中推断出来即可.
| 归档时间: |
|
| 查看次数: |
2821 次 |
| 最近记录: |