Кастинг из AnyObject в CGColor? без ошибок или предупреждений

Привет, StackOverflow 🙂

У меня возникла странная проблема, так как я обновился до версии 2.0

Я пытаюсь установить цвет границы, поэтому я пишу self.layer.borderColor = borderColor as! CGColor self.layer.borderColor = borderColor as! CGColor где borderColor – это AnyObject , а self.layer.borderColor – это CGColor?

Если я пишу self.layer.borderColor = borderColor as! CGColor self.layer.borderColor = borderColor as! CGColor Я получаю предупреждение

Обработка принудительного понижения до «CGColor» как необязательного никогда не приведет к «нолю»,

и рекомендуется вместо этого использовать as?

Если я вместо этого напишу self.layer.borderColor = borderColor as? CGColor self.layer.borderColor = borderColor as? CGColor Я получаю ошибку

Условное нажатие на тип CoreFoundation «CGColor» всегда будет успешным

Просто чтобы убедиться, что я не пропустил что-то, я также попытался написать container.layer.borderColor = borderColor as CGColor и container.layer.borderColor = borderColor Оба они дали следующую ошибку:

«AnyObject» не конвертируется в «CGColor»; вы хотели использовать «как!» заставить downcast?

Просто работайте с предупреждением, данным XCode при использовании as! это не так страшно, но я бы предпочел, чтобы мой код был предупрежден бесплатно. Убедиться, что мне действительно нужна ваша помощь. Я что-то не понимаю или это просто ошибка в Swift 2.0, которую я должен сообщить.

Ура!

Иаков

xcode также дает мне следующий намек:

Добавьте круглые скобки вокруг броска, чтобы отключить это предупреждение.

ну … когда xcode говорит так …

 layer.borderColor = (borderColor as! CGColor) 

Вы используете цвет слоя, который является основной графикой, вам нужно установить основной графический цвет с свойством cgColor

 layer.borderColor = UIColor.red.cgColor 
Давайте будем гением компьютера.