gpt4 book ai didi

ios - Int 不能转换为 UInt8?

转载 作者:行者123 更新时间:2023-11-28 09:31:02 25 4
gpt4 key购买 nike

我在使用此功能时遇到了一些非常令人沮丧的问题:

func degToRad(deg:Int) -> Float {
return deg*(M_PI/180.0)
}

return 行我收到一条错误消息:'Int' is not convertible to 'UInt8'

这真让我抓狂。这适用于 Obj-C。我真的开始质疑 Swift 作为一种语言......


更新

我将函数更新为:

func degToRad(deg:Double) -> CGFloat {
return CGFloat(deg*(M_PI/180.0))
}

但是当我尝试这样使用它时:

CGAffineTransformMakeRotation(CFunctions.degToRad(90))

除了 Double -> CGFloat not convertible 我得到了同样的错误

最佳答案

出于安全原因,Swift 中没有隐式类型转换。您必须将 deg 转换为 Float。字面量没有隐式类型,可以作为不同类型的数量,但通过首先启动除法,类型被选择,然后才能由 deg 的类型决定。因此,您还必须转换 M_PI/180.0 的结果:

func degToRad(deg: Int) -> Float {
return Float(deg) * Float(M_PI / 180.0)
}

并且可能会用更多的语言来吸引您。这是 AngularMeasure 的便捷枚举:

enum AngularMeasure {
case Degrees(CGFloat)
case Radians(CGFloat)

var degrees: CGFloat {
switch (self) {
case let .Degrees(value):
return value
case let .Radians(value):
return value * CGFloat(180.0 / M_PI)
}
}

var radians: CGFloat {
switch (self) {
case let .Degrees(value):
return value * CGFloat(M_PI / 180.0)
case let .Radians(value):
return value
}
}
}

var measure : AngularMeasure = .Degrees(180)
println(measure.radians) // 3.14159274101257

编辑:

在您的更新中,您试图将实例方法作为类方法来调用。您需要将您的方法定义为类方法:

class func degToRad(deg:Double) -> CGFloat {
return CGFloat(deg*(M_PI/180.0))
}

同样,这是一个可怕的编译器错误。

关于ios - Int 不能转换为 UInt8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24852192/

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