我们正在考虑将应用程序从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实例。