我的代码在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
}
答案 0 :(得分:2)
您必须在!
之后添加textColor
:
cell.textView!.linkTextAttributes = [NSForegroundColorAttributeName:cell.textView!.textColor!]
原因是linkTextAttributes
类型为[String : AnyObject!]
,而您要分配的字典属于[String : UIColor?]
类型。 UIColor
与AnyObject
之间的不匹配,因为UIColor
可以投放到AnyObject
。问题是您提供的UIColor?
是可选的。并且您不能隐式地将可选UIColor?
强制转换为非可选AnyObject!
。因此,你必须通过添加UIColor
来强制展开颜色以从UIColor?
获得!
。
答案 1 :(得分:0)
试试这个
f19