从对象显示 Tableview 的好方法 - iOS Swift

Posted

技术标签:

【中文标题】从对象显示 Tableview 的好方法 - iOS Swift【英文标题】:Good way to display Tableview from object - iOS Swift 【发布时间】:2019-04-02 16:16:27 【问题描述】:

我有一个具有属性的对象,我想将每个属性显示为 tableview 行。我应该如何准备我的数据源

例如:

struct Car 
    var make: String
    var model: String
    var year: String
    var vin: String


let ford = Car(make: Ford, model: Mustang, year: 2018, vin: 1234)

现在在我的表格视图中,我需要如下所示,即每个属性都显示为表格行单元格

如何准备我的数据源?

我知道我需要将其添加到具有属性名称的数组中:value like

["make":"Ford", "model":"Mustang", ...]

但是我该怎么做以及如何解析它以显示在我的 cellForRow 方法中。

请指教

这只是示例。在我的实际结构中,我有 20 多个属性,每个属性都需要显示在表格行中。所以希望这是在 tableview 中

【问题讨论】:

您的问题非常广泛...您的数据在哪里?您是从服务器获取它作为 JSON 数据吗?它在本地数据库中吗?本地文本文件? 我从 json 获取数据并将其解析为另一个模型对象。 json 包含汽车数组,点击该汽车会显示此页面 那么,您已经将 json 数据解析为 Car 对象数组了吗?不知道你在哪里遇到问题?查看How to Ask 和minimal reproducible example。 请再看问题..这与json无关。我也有一系列正确的汽车对象。每个汽车对象都有我提到的模型。这个问题是针对单车的,不是针对所有车的。从上面的模型结构中我如何显示表格视图 我最初将其作为***.com/questions/46597624/… 的副本关闭,它展示了如何从结构中制作字典(因为您的comment),但我已经重新打开了,因为 no i>,这不是你需要做的。您已经有了数据模型,因此您无需从中创建字典即可在表格视图中显示。只需使用模型。 【参考方案1】:

假设你知道你的结构......

创建一个自定义表格视图单元格,带有“属性名称”标签和“值”标签(如图所示)。

添加类变量:

let propertyArray = [
    "Make",
    "Model",
    "Year",
    "VIN"
]

var valueArray: [String] = [String]()

当您选择了 Car 对象时,

valueArray = [
    selectedCarObject.make,
    selectedCarObject.model,
    selectedCarObject.year,
    selectedCarObject.vin
]

现在,您的 tableView 实现可以使用:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return labelArray.count


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "MyCustomCell", for: indexPath) as! MyCustomCell

    cell.propertyLabel.text = propertyArray[indexPath.row]
    cell.valueLabel.text = valueArray[indexPath.row]

    return cell

【讨论】:

是的,但是最好有一个汽车数组var cars: [Car] = ...,然后访问这些对象的属性,例如cell.propertyLabel.text = cars[indexPath.row].make等。 @ayaio - 大概 OP 一个汽车数组,并将“选定”汽车传递给他用来显示属性表的任何类。【参考方案2】:
var modelDictionary = ["make":"Ford", "model":"Mustang", ...]

你的模型字典将是你的数据源,我假设你的单元格有两个标签,你将放置字典的键和值的数据。

您将如何制作模型数据的字典?

您可以尝试在模型上创建一个函数,为它拥有的每个属性创建一个字典。

希望我回答你的问题。

【讨论】:

嗨约翰,我实际上正在寻找将我的模型数据转换为字典的示例代码

以上是关于从对象显示 Tableview 的好方法 - iOS Swift的主要内容,如果未能解决你的问题,请参考以下文章

JSON Parse iOS Array of Dictionaries 解析成数组只显示 tableview 中的最后一个对象

iOS tableView右滑显示选择

如何让 iOS 在 tableView 上显示删除按钮,但不允许从右侧完全滑动删除

如何在一个 tableView 中使用两个不同的自定义单元格?使用情节提要,iOS 7

从用户代理中识别 iOS 设备的好方法是啥?

尝试从来自 Web 服务 ios 的响应中显示多个标签