错误:"无法分配String类型的值:UIColor?到String类型的值:AnyObject!"

时间:2015-10-04 09:35:10

标签: ios swift2 uicolor

我的代码在Swift 1.2中工作正常,但在Swift 2中我收到了这个错误:

  

无法指定String类型的值:UIColor?到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 个答案:

答案 0 :(得分:2)

您必须在!之后添加textColor

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

原因是linkTextAttributes类型为[String : AnyObject!],而您要分配的字典属于[String : UIColor?]类型。 UIColorAnyObject之间的不匹配,因为UIColor可以投放到AnyObject。问题是您提供的UIColor?是可选的。并且您不能隐式地将可选UIColor?强制转换为非可选AnyObject!。因此,必须通过添加UIColor来强制展开颜色以从UIColor?获得!

答案 1 :(得分:0)

试试这个

f19