我正在尝试将单元格的背景颜色设置为等于dict中的UI颜色,但我不断收到以下错误。即使把它作为数组传递它也可以吗?
DateTime
答案 0 :(得分:0)
用作!明确告诉它的类型
cell.backgroundColor = dict["colourCode"] as! UIColor
答案 1 :(得分:0)
在功能中进行以下更改。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//Reusing the cell
var cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier") as? UITableViewCell
if cell == nil {
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CellIdentifier")
}
let dict = colourList[indexPath.row] as! NSDictionary
print(dict) \\ e.g ["Colour": "Red", "colourCode": UIDeviceRGBColorSpace 1 0 0 1]
print(dict["colourCode"]!) \\ e.g UIDeviceRGBColorSpace 1 0 0 1
cell!.backgroundColor = dict["colourCode"] as! UIColor \\ ERROR - Cannot assign a value of type 'NSObject?' to a value of type 'UIColor?'
return cell!
}
答案 2 :(得分:0)
你可以轻松强迫演员
cell.backgroundColor = dict["colourCode"] as! UIColor
然而,问题是由于设计不良引起的 - 您在一个字典中混合了两种类型的数据。相反,您可以使用辅助类/ struct:
class MyColor {
let name: String
let color: UIColor
init(name: String, withColor color: UIColor) {
self.name = name
self.color = color
}
}
用作
let colorList = [MyColor(name: "Red", withColor: UIColor.redColor()), ...]
比你可以直接打电话(没有演员)
let myColor = colorList[indexPath.row]
cell.backgroundColor = myColor.color
词典是一个可怜的人替代物品。
答案 3 :(得分:0)
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let colour = colourList[indexPath.row]["colourCode"] as! UIColor
cell.backgroundColor = colour
return cell
}