当前位置: 首页 > 面试题库 >

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

毕魁
2023-03-14
问题内容

我们正在考虑将应用程序从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将数组中是允许的,所以您将获得额外的类型安全。



 类似资料:
  • 问题内容: 我有多个共享某些字段。例如, 我还有一个仅处理共享字段的功能,例如 如何处理这种情况?我知道我们可以将颜色和质量转换为函数,然后可以使用interface并将该接口传递给function 。但是,如果不能更改和的类型,该怎么办。我是否必须定义两个具有基本相同实现的功能? 问题答案: 在Go中,您不会像Java,c#等那样使用传统的多态性。大多数事情都是使用合成和类型嵌入完成的。一种简单

  • 问题内容: 大家好,我被困在一个地方,问题是我有下面显示的三个类,并且我想在AsyncTask类中实例化我的DatabaseHelper类。您能否提供帮助,如何在AsyncTask类中获取上下文? 问题解决了 MainActivity类 数据库助手 FetchData类 # 感谢Kasra,我创建了第四个类并在调用AsyncTask之前在MainActivity中使用它 ContextStatic

  • 问题内容: 我有两个数组。 我需要合并这些数组,并在下拉列表中显示为 我怎么能使用swift.im新手来快速获得此结果,有人可以帮忙吗? 问题答案: 压缩数组并连接结果:

  • 问题现象 数据包含多个种类(例如标题、标题对应的子类等)的子数据,如何根据数据种类为ListItem设置不同的样式。

  • 问题内容: 我正在努力弄清楚此代码段出了什么问题。目前这在Objective- C中有效,但是在Swift中这只是在方法的第一行崩溃。它在控制台日志中显示错误消息:。 问题答案: 另请参阅马特的答案,其中包含解决方案的后半部分 让我们找到一个无需创建自定义子类或笔尖的解决方案 真正的问题在于,Swift区分可以为空()的对象和不能为空的对象。如果您没有为标识符注册笔尖,则可以返回。 这意味着我们必

  • 我有两个具有FK关系的表。我想要的相当于: 我如何在jOOQ中有效地做到这一点?最后,每个结果行需要一个ARecord实例和一个BRecord实例。