如何在Swift中为UITableView处理数组中的两种不同类型
我们正在考虑将应用程序从obj-c迁移到Swift。一个问题是,我们的obj-
c代码中有一个UITableView,其中包含类型为Header
或类型的对象Item
。基本上,它解析cellForRowAtIndexPath上具有的类型。Swift数组(据我所知)只能处理一种类型。鉴于此,我们如何处理UITableView中要使用的两种不同类型?是否会有像DataObj这样的包装对象,我们每个工作都有可精巧的实例?
-
这是一种使用协议来组合两个类的方法:
protocol TableItem { } class Header: TableItem { // Header stuff } class Item: TableItem { // Item stuff } // Then your array can store objects that implement TableItem let arr: [TableItem] = [Header(), Item()] for item in arr { if item is Header { print("it is a Header") } else if item is Item { print("it is an Item") } }
这种过度的优点
[AnyObject]
或者NSMutableArray
是只有实现了这个类TableItem
将数组中是允许的,所以您将获得额外的类型安全。