大模型表格视图解决方案Swift

问题描述:

我有一个问题,关于你认为什么是处理我的问题的最好方法。大模型表格视图解决方案Swift

这种情况是,我有很大的模型,包含大量的数据。这些存储在数据库中并发送给客户端。现在我想以表格视图的方式显示这些数据。显示数据不是问题,但访问它的最佳方式是。

我的问题是:什么是处理大数据模型表视图细胞

因此,要举一个例子我有一个包含说30个变量模型一个聪明的办法。 现在我有一个页面视图控制器的表格视图在那里我想在第一页显示变量1,2,5,6,7,9,10和下一页1,2,21,23, 24,22(100个对象)和页面上方有一个小的指示符,表示数字或字符串的含义。

于是我想到了一个解决方案与斯威夫特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 

从我的理解,我认为你应该使用枚举的页面的列表。通过使用枚举数组,它可以隔离要呈现的变量,并且不必为了实现这一目的而创建唯一的tableView。您只需将一个数组传递给tableView委托/ datasouce函数。没有代码示例/更多信息,这是我可以推断的。

+0

我已经在操场上添加了一个例子,希望它能让我更加清楚自己想要完成的事情。如果你错过了什么让我知道。 –

+0

@JpepeJoosten因此,根据我的理解,您希望表视图仅显示每个玩家对象的某些数据?所以,如果你只想提出所有的篮球积分和足球比赛的所有积分?足球? – Jay

+0

没错,这是目标,并找到最有效的方法。 –