无法指定“NSObject”类型的值?到'UIColor'类型的值?

时间:2015-08-30 10:21:10

标签: ios swift dictionary uicolor

我正在尝试将单元格的背景颜色设置为等于dict中的UI颜色,但我不断收到以下错误。即使把它作为数组传递它也可以吗?

DateTime

4 个答案:

答案 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
}