【问题标题】:Cannot convert return expression of type 'UIColor' to return type '[UIColor]' on UIColor extension无法在 UIColor 扩展上将类型为“UIColor”的返回表达式转换为返回类型“[UIColor]”
【发布时间】:2016-01-19 00:43:25
【问题描述】:

我正在为 UIColor 编写一个简单的扩展来获取基于 this answer 的十六进制字符串:

import UIKit

extension UIColor {
    public static func colorWithString (hex:String) -> UIColor {
        var cString:String = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).uppercaseString

        if (cString.hasPrefix("#")) {
            cString = (cString as NSString).substringFromIndex(1)
        }

        if (cString.characters.count != 6) {
            return UIColor.grayColor()
        }

        let rString = (cString as NSString).substringToIndex(2)
        let gString = ((cString as NSString).substringFromIndex(2) as NSString).substringToIndex(2)
        let bString = ((cString as NSString).substringFromIndex(4) as NSString).substringToIndex(2)

        var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0;
        NSScanner(string: rString).scanHexInt(&r)
        NSScanner(string: gString).scanHexInt(&g)
        NSScanner(string: bString).scanHexInt(&b)

        return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: CGFloat(1))
    }
}

现在我可以清楚地看到返回类型是UIColor,但是当我尝试使用它时:

UIColor.colorWithString("F9264E")

我明白了:

无法将“UIColor”类型的返回表达式转换为“[UIColor]”类型的返回表达式

发生了什么事?

【问题讨论】:

  • 您的代码在 Playgrounds 中对我来说运行良好,您的环境是什么?
  • Xcode 7.2,面向 iOS 9.2。
  • 它工作正常UIDeviceRGBColorSpace 0.976471 0.14902 0.305882 1我和你一样的环境,有些讨厌

标签: ios swift swift-extensions


【解决方案1】:

您需要发布使用您的扩展程序的完整声明。我的猜测是你正在做一个赋值,而你要赋值的变量是 UIColor 类型的数组:

var colors: [UIColor]

colors = UIColor.colorWithString("F9264E")

这将为您提供所报告的确切错误。

相反,您需要这样的代码:

colors = [UIColor.colorWithString("F9264E")]

var colors = [UIColor]()
colors.append(UIColor.colorWithString("F9264E"))

【讨论】:

  • 啊!是的,你完全正确。我在另一个需要颜色数组的函数中返回它。谢谢!
  • 如果它解决了您的问题,您应该接受我的回答。顺便说一句,“颜色?”你是英国人吗?
  • 是的,必须等待计时器?。不,但接近!伊格鲁兰迪安(又名加拿大)
  • 啊,卡努克人! (或者不管你怎么拼写。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多