我对您认为处理问题的最佳方式有疑问。
案例是,我的模型非常大并且包含大量数据。它们存储在数据库中并发送到客户端。现在我想以表格视图的方式显示这些数据。显示数据不是问题,但访问它的最佳方式是。
我的问题是:在表格视图单元格中处理大数据模型的智能方法是什么
举一个例子,我有一个包含30个变量的模型。 现在我有一个带有表视图的页面视图控制器,在第一页上我想显示变量1,2,5,6,7,9,10和下一页1,2,21,23,24 ,22(100个对象)和页面上方有一个小指示器,数字或字符串的含义。
所以我想到了Swift 4的解决方案
typealias listTypeObject = (name: String, minSize: Int, object: KeyPath<Any, Any>)
此处的问题是您无法转换密钥路径类型,因此无法接受我的密钥路径。所以这至少不会在这种状态下起作用。如果有人知道这个解决方案会很棒!
另一个解决方案是手动创建每个列表,标题和内容分开。这将花费我很多代码,我想这可能会小得多。
我希望有人能告诉我更好的方法,或者告诉我最好的方法是手工制作。
非常感谢!
更新1: 代码示例//这是包含页面
的列表enum listTypes {
case player
case playerPoints
case team
}
// I have a base model
class BaseModel {
var id: Int = 0
let updated: Date = Date()
init(id: Int) {
self.id = id
}
}
// I have multiple final models like this but bigger
final class PlayerModel: BaseModel {
var firstName: String = "John"
var surname: String = "Doe"
var pointsInFootball: Int = 60
var pointsInBasketball: Int = 23
init(id: Int, firstName: String, surname: String, pointsInFootball: Int, pointsInBasketball: Int) {
super.init(id: id)
self.firstName = firstName
self.surname = surname
self.pointsInFootball = pointsInFootball
self.pointsInBasketball = pointsInBasketball
}
}
final class TeamModel: BaseModel {
var name: String = "TeamTest"
}
// Lets create the example
var dataArray: [BaseModel] = []
// Add some test objects to the array
for i in 0..<10 {
let object = PlayerModel(id: i, firstName: "John\(i)", surname: "Doe\(i)", pointsInFootball: 10 * i, pointsInBasketball: 5 * i)
dataArray.append(object)
}
// So now in the list I would like to say what is accessible for the table view
// listTypes.player = PlayerModel: firstName - surname - age
// listTypes.playerPoints = PlayerModel: firstName - pointsInFootball - pointsInBasketball - pointsInSkiing
// But list type team should be
// listTypes.team = TeamModel: name
答案 0 :(得分:0)
据我所知,我认为你应该使用枚举。通过使用枚举数组,它可以隔离您想要呈现的变量,并且您不必创建唯一的tableView来完成此操作。您只需将数组传递给tableView委托/ datasouce函数。没有代码示例/更多信息,这是我可以推断的全部内容。