arrays - 数组中的 Swift 分组顺序对象
问题描述
我有以下对象数组:
[Car, Train, Train, Motorbike, Train, Car, Car]
我想将彼此跟随的任何相同类型的对象分组为以下内容:
[Car, [Train, Train], Motorbike, Train, [Car, Car]]
甚至更好:
[Car, GroupOfVehicles(type: .train, vehicles:[Train, Train]), Motorbike, Train, GroupOfVehicles(type: .car, vehicles:[Car, Car])
我发现了一些关于按属性分组的 SO 帖子,但我需要保持数组的顺序性不变。
对于那些对我的目标感兴趣的人:我想在一个表格中显示对象,但如果有一组相似的顺序对象,它们应该全部显示在同一“行”上,因此用户将滚动浏览它们水平。
解决方案
下面是一个基于数组的解决方案,Any
但如果这些类型都符合一个通用协议或具有一个通用超类,那么这有望以更有效的方式解决。
var grouped: [[Any]] = []
var previous: String = ""
motors.forEach {
let vehicleType = "\(type(of: $0))"
if vehicleType != previous {
grouped.append([$0])
previous = vehicleType
} else {
grouped[grouped.count - 1].append($0)
}
}
推荐阅读
- graphics - 为什么 BufferViews 和 Accessors 在 glTF 中是分开的?
- java - SparkContext Java 从 AWS EMR 部署作业和 MapReduce
- java - 从 SQLite 获取数据到 Recyclerview 它导致我为空
- qt - 如何检查 QPdfWriter 对象是否可以写入指定文件?
- android - Flutter 应用程序构建失败,需要帮助解决依赖关系
- java - 重新打开活动后,ImageView 未使用新 URL 更新
- c++ - 如何使用 IDirectManipulationViewport::SetViewportRect?
- android - 活动被破坏时如何显示来自服务的通知
- c# - 在 OpenGL 引擎中正确获取 OBB-Triangle 碰撞检测
- android - 是否有适用于 Android 9 的“请勿打扰”设置的 API?