没有强制转换的Swift协议实现

时间:2016-11-16 10:38:43

标签: swift

我试图实现一个如下所示的协议:

protocol CellDrawerProtocol {
    func cellFor(tableView: UITableView, atIndexPath indexPath: IndexPath) -> UITableViewCell
    func draw(cell: UITableViewCell, withItem anItem: ProfileItemProtocol)
}

当我尝试在某些条款中实现协议时出现问题:

class TagCellDrawer : CellDrawerProtocol{

    internal func draw(cell: TagsTableViewCell, withItem anItem: Skills) {
        tagCell.configure(withSkills: skills)
    }

    internal func cellFor(tableView: UITableView, atIndexPath indexPath: IndexPath) -> UITableViewCell {
        return tableView.dequeueReusableCell(withIdentifier: "tagsCell")!
    }

}

TagsTableViewCell继承自UITableViewCell,而Skills符合协议ProfileItemProtocol,但编译器表示TagCellDrawer不符合协议CellDrawerProtocol。那么有没有办法避免在协议实现中强制转换类并使用子类来实现协议。

0 个答案:

没有答案