在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
,因为它是你可以命名的东西(比如Sliceable
、Printable
、Comparable
等)。像I
这样的前导前缀不是很好的Swift风格。然而,很难想象为这个特殊的例子付出这么大的代价。