2015-10-04 2 views
2

Мой код работает отлично в Swift 1.2, но в Swift 2 я получаю эту ошибку:Ошибка: «Невозможно присвоить значение типа String: UIColor? Для значения типа String: AnyObject!»

Cannot assign a value of type String: UIColor? to a value of type String: AnyObject!

Мой код:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = super.collectionView(collectionView, cellForItemAtIndexPath: indexPath) as! JSQMessagesCollectionViewCell 

    let message = messages[indexPath.row] 

    if message.senderId == self.senderId { 
     cell.textView!.textColor = UIColor.blackColor() 
    } else { 
     cell.textView!.textColor = UIColor.whiteColor() 
    } 

    // Error in the following line 
    cell.textView!.linkTextAttributes = [NSForegroundColorAttributeName:cell.textView!.textColor] 

    return cell 
} 

ответ

2

Вы должны добавить ! после textColor:

cell.textView!.linkTextAttributes = [NSForegroundColorAttributeName:cell.textView!.textColor!] 

Причина, заключающаяся в том, что linkTextAttributes имеет тип [String : AnyObject!], в то время как словарь хотите присвоить тип [String : UIColor?]. Несоответствие между UIColor и AnyObject, потому что UIColor можно отличить до AnyObject. Проблема в том, что предоставленный вами UIColor? является необязательным. И вы не можете неявно отнести опционный UIColor? к необязательному AnyObject!. Поэтому вам необходимо принудительно развернуть цвет, чтобы получить UIColor от UIColor?, добавив !.

+0

Спасибо человеку! Работает :). Извините, я не могу голосовать за ваш ответ, потому что я здесь новый, и у меня нет достаточной репутации (по крайней мере 15 требуется). –

+0

Вы можете опросить мой вопрос, чтобы получить 10 репутации (я думаю), и у меня уже есть 5 –

0

Попробуйте с этим

textView!.linkTextAttributes = [NSForegroundColorAttributeName:textView!.textColor as AnyObject!] 
Смежные вопросы