从对象显示 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 上显示删除按钮,但不允许从右侧完全滑动删除