gpt4 book ai didi

ios - Swift 使用没有泛型的动态类型引用创建类型数组

转载 作者:可可西里 更新时间:2023-11-01 02:18:12 25 4
gpt4 key购买 nike

鉴于此功能:

func createEmptyArrayWithViewType(viewType: UIView.Type) -> [UIView] {
/// Create array of viewType views
}

如何使用该函数创建一个空数组? viewType 参数可以是任何 UIView 子类(UIImageView、UILabel 等)是否可以不使用泛型?

更新

好吧,我想更多的上下文会有所帮助。

我正在尝试构建的是一个重用队列,它几乎可以完成 UITableView 和 UICollectionView 提供的功能。

这是我类(class)的当前代码:

class SwipeView: UIView {
private var _reuseQueues = [String: [MatchSwipeCell]]()

...
}


/// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//MARK: - Reuse queue
/// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
extension SwipeView {
func registerClass(cellClass: SwipeCell.Type, forCellWithReuseIdentifier identifier: String) {
if let reuseQueue = _reuseQueues[identifier] {
fatalError("Reuse identifier '\(identifier)' was already registered with class '\(reuseQueue.dynamicType.Element.self)'")
}

/// This is not working!
_reuseQueues[identifier] = [cellClass]()
}

func dequeueReusableCellWithReuseIdentifier(identifier: String) -> SwipeCell {
guard var reuseQueue = _reuseQueues[identifier] else {
fatalError("No class was registered for the reuse identifier '\(identifier)'")
}

if let cell = reuseQueue.first {
reuseQueue.removeFirst()
cell.prepareForReuse()
return cell
}

return reuseQueue.dynamicType.Element(reuseIdentifier: identifier)
}

private func enqueueCellForReuse(cell: SwipeCell) {
_reuseQueues[cell.reuseIdentifier]?.append(cell)
}
}

最佳答案

等等,您只是想创建一个空的 UIView 数组?您的函数将如下所示:

func createEmptyArrayWithViewType(viewType: UIView.Type) -> [UIView] {
return []
}
不需要

viewType 参数。您可以将您想要的任何 View 放入此数组(UIImageViewUILabel 等)

var array = createEmptyArrayWithViewType(UIImageView)
array.append(UIImageView())
array.append(UILabel())

如果你想让你的函数返回[UIView],你最终会得到空的UIView数组

关于ios - Swift 使用没有泛型的动态类型引用创建类型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com