2016-01-19 5 views
1

Я пишу простое расширение для UIColor взять шестнадцатеричную строку Основы this answer:Невозможно преобразовать возвращаемое выражение типа «UIColor» для возвращения типа '[UIColor] о продлении UIColor

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]'

Что происходит?

+0

Ваш код работает отлично для меня в игровые площадки, каково ваше окружение? –

+0

Xcode 7.2, ориентированный на iOS 9.2. – brandonscript

+0

он работает отлично 'UIDeviceRGBColorSpace 0.976471 0.14902 0.305882 1' У меня такая же среда, как и вы, что-то неприятное –

ответ

4

Вам необходимо опубликовать все заявление, в котором используется расширение. Я предполагаю, что вы делаете назначение и переменной вы присваиваете имеет тип массива UIColor:

var colors: [UIColor] 

colors = UIColor.colorWithString("F9264E") 

Это даст вам точную ошибку вы сообщаете.

Вместо этого вам понадобится такой код:

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

или

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

AH! Да, ты совершенно прав. Я возвращал его в другую функцию, требующую массив цветов. Благодаря! – brandonscript

+0

Вы должны принять мой ответ, если он решит вашу проблему. Кстати, «цвета?» Ты брит, я так понимаю? –

+0

Да, пришлось ждать таймера. И нет, но близко! Igloolandian (aka Canada) – brandonscript