在Swift中传入接口来配置视图方法



在iOS示例中,我经常看到在UITableViewCell子类上设置对象,然后该子类知道如何配置视图。

伪码

class MyCustomObject {
    var name = ""
}
class MyCell : UITableViewCell {
    @IBOutlet weak var nameLabel: UILabel!
    func setMyCustomObject(obj: MyCustomObject) {
        nameLabel = obj.name
    }
}

这些天我也在研究一些TypeScript/Angular代码,我看到了它们将为对象创建接口的模式。

更多伪码

interface ICustomInterface {
    name: String
}
class MyCustomObject : ICustomInterface {
    ...
}

然后,您可以在视图中执行一些操作,只需传入接口而不是实际对象。

setObjectForView(obj: ICustomInterface) {
    nameLabel = obj.name
}

这是Swift可以做的事情吗?还是真的没有必要?当我试图在Swift中做这样的事情时,我会遇到我不理解的链接器错误,所以我想知道这个范式是否适合Swift。

在Swift中,这是一个protocol。它对某些问题非常强大,但它并不值得应用于每个细胞。

如果你这样做,更好的名称应该是Nameable,因为它是你可以命名的东西(比如SliceablePrintableComparable等)。像I这样的前导前缀不是很好的Swift风格。然而,很难想象为这个特殊的例子付出这么大的代价。

最新更新