2017-07-04 21 views
0

我有一個問題,關於你認爲什麼是處理我的問題的最好方法。大模型表格視圖解決方案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 

回答

0

從我的理解,我認爲你應該使用枚舉的頁面的列表。通過使用枚舉數組,它可以隔離要呈現的變量,並且不必爲了實現這一目的而創建唯一的tableView。您只需將一個數組傳遞給tableView委託/ datasouce函數。沒有代碼示例/更多信息,這是我可以推斷的。

+0

我已經在操場上添加了一個例子,希望它能讓我更加清楚自己想要完成的事情。如果你錯過了什麼讓我知道。 –

+0

@JpepeJoosten因此,根據我的理解,您希望表視圖僅顯示每個玩家對象的某些數據?所以,如果你只想提出所有的籃球積分和足球比賽的所有積分?足球? – Jay

+0

沒錯,這是目標,並找到最有效的方法。 –