相关疑难解决方法(0)

在Ciftloat中使用CGFloat进行浮动

我需要将值存储为Float,但源数据是CGFloat:

let myFloat : Float = myRect.origin.x
Run Code Online (Sandbox Code Playgroud)

但这会导致编译器错误:'NSNumber'不属于子类型'Float'

所以如果我明确地这样做:

let myFloat : Float = myRect.origin.x as Float
Run Code Online (Sandbox Code Playgroud)

但这反过来导致编译器错误:'无法将表达式的类型'Float'转换为'Float''

这样做的正确方法是什么,请满足编译器的要求?

casting cgfloat swift

87
推荐指数
3
解决办法
8万
查看次数

找不到接受提供的参数的'/'的重载

// Playground - noun: a place where people can play


func getAverage(numbers: Int...) -> Double{
    var total = 0
    var average:Double = 0

    for number in numbers{
        total = total + number
    }

    average = total / numbers.count

    return average
}

getAverage(3, 6)
Run Code Online (Sandbox Code Playgroud)

我收到错误 average = total / numbers.count

找不到接受提供的参数的'/'的重载

我试图修复:

average = Double(total/numbers.count)
Run Code Online (Sandbox Code Playgroud)

但是getAverage被设置为4而不是4.5

swift swift-playground

36
推荐指数
2
解决办法
1万
查看次数

Swift需要奇怪的铸造

我正在观看WWDC2014上的一些视频并尝试编写我喜欢的代码,但我注意到的一个奇怪的事情是Swift一直对我生气并希望我投射到不同的数字类型.这很容易,但在WWDC的视频中他们不需要这样做.以下是"Interface Builder的新功能"中的示例:

-M_PI/2一直给我错误:"无法找到接受提供的参数的'/'的重载'

有没有人有这个问题的解决方案,这不仅仅涉及投射,因为有明显的另一种方式这样做?对于类似的问题,我有很多例子.

if !ringLayer {
            ringLayer = CAShapeLayer()

            let innerRect = CGRectInset(bounds, lineWidth / 2.0, lineWidth / 2.0)
            let innerPath = UIBezierPath(ovalInRect: innerRect)

            ringLayer.path = innerPath.CGPath
            ringLayer.fillColor = nil
            ringLayer.lineWidth = lineWidth
            ringLayer.strokeColor = UIColor.blueColor().CGColor
            ringLayer.anchorPoint = CGPointMake(0.5, 0.5)
            ringLayer.transform = CATransform3DRotate
                 (ringLayer.transform, -M_PI/2, 0, 0, 1)

            layer.addSublayer(ringLayer)
        }
        ringLayer.frame = layer.bounds
Run Code Online (Sandbox Code Playgroud)

swift

2
推荐指数
1
解决办法
2257
查看次数

标签 统计

swift ×3

casting ×1

cgfloat ×1

swift-playground ×1