如何在Swift中为UITableView处理数组中的两种不同类型

发布于 2021-01-31 23:31:42

我们正在考虑将应用程序从obj-c迁移到Swift。一个问题是,我们的obj-
c代码中有一个UITableView,其中包含类型为Header或类型的对象Item。基本上,它解析cellForRowAtIndexPath上具有的类型。Swift数组(据我所知)只能处理一种类型。鉴于此,我们如何处理UITableView中要使用的两种不同类型?是否会有像DataObj这样的包装对象,我们每个工作都有可精巧的实例?

关注者
0
被浏览
77
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    这是一种使用协议来组合两个类的方法:

    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将数组中是允许的,所以您将获得额外的类型安全。



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看