上下文类型cgfloat不能与数组文字一起使用

时间:2017-01-18 11:10:38

标签: swift swift3 uilabel gradient

我使用UIImage + Gradient.swift文件为我的标签添加渐变,但是我收到此错误:

  

上下文类型cgfloat不能与数组文字一起使用

我已经回顾了一些常见问题解答Q& A但我仍感到困惑。

以下是代码:

let components = colors.reduce([]) { (currentResult: [CGFloat], currentColor: UIColor) -> [CGFloat] in
        var result = currentResult
        let numberOfComponents = currentColor.cgColor.numberOfComponents
        let components = currentColor.cgColor.components
        if numberOfComponents == 2 {
            result.append([components?[0], components?[0], components?[0], components?[1]])
        } else {
            result.append([components?[0], components?[1], components?[2], components?[3]])
        }
        return result
    }

给出错误的行是:

  

result.append([components?[0],components?[0],components?[0],components?[1]])   result.append([components?[0],components?[1],components?[2],components?[3]])

1 个答案:

答案 0 :(得分:2)

此错误与尝试将不是数组的变量设置为数组有关。例如,这会产生类似的错误:

var myFavSnacks:String = ["Apples","Grasses","Carrots"] //gives similar error

在您的情况下,它认为您想要将CGFloats数组添加到数组中的一个索引,而不是向您的数组添加一些CGFloats。

要一次向数组添加多个项目,请使用contentsOf:,如下所示:

colors.append(contentsOf: ["red", "blue"]) 
//adds strings "red" and "blue" to an existing array of strings called colors

从此处提供的文档: https://developer.apple.com/reference/swift/array