gpt4 book ai didi

ios - 在 Swift 中将 CLLocationSpeed 转换为 long

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:01 25 4
gpt4 key购买 nike

我正在尝试在 Swift 中获取 GPS 速度。我已经设置好一切,现在正在尝试进行一些计算。我想将 MS“字符串”转换为 KMH。因此,我尝试将类型转换为 long,但无法正常工作。

我试过这个:

var ms: long?
ms = LocationManager.location.speed

但是我得到“CLLocationspeed is not convertible to long”

我是 iOS 编程和 Swift 的新手,所以我不知道如何解决这个问题。

最佳答案

您真的应该从阅读 Swift Book 开始, 然而:

long 不是 Swift 中的标准类型(不确定您在哪里找到的 :)。一个合适的整数类型是 Int(除非确切的大小对你很重要——但它可能并不重要)。但是 CoreLocation 中的 CLLocationSpeed 是 Double 的类型别名,您应该坚持使用它来进行速度计算。

在 Swift 中,大多数类型之间的转换不会隐式发生。如果你真的想让一个 Double 变成一个 Int,你需要明确地转换它,即 let ms = Int(LocationManager.location.speed) .

当您来自类 C 语言时,这感觉很痛苦。但背后有充分的理由。例如,当您将 float 分配给整数类型时, float 的小数部分应该如何处理?您可能忘记了您的函数正在返回一个 float 并且不小心引入了截断错误?

为了弥补这一点,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

大多数时候你不需要给出类型,只需让它从上下文中推断出来即可。

关于ios - 在 Swift 中将 CLLocationSpeed 转换为 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com