问题描述
我正在创建Swift
应用,并在内部应用中实现UITableView
折叠/扩展功能,并且在tableview中设置静态数据并成功显示,但在尝试加载{{1}时}比我面临的问题要多的是我的代码和模型结构
这是解析JSON
JSON
这是我用静态数据填充tableview的方式
public struct Item {
var service: String
var service_price: Int
var barber_service_id: Int
var service_duration: Int
public init(service: String,service_price: Int,barber_service_id: Int,service_duration: Int) {
self.service = service
self.service_price = service_price
self.barber_service_id = barber_service_id
self.service_duration = service_duration
}
}
public struct Section1 {
var name: String
var items: [Item]
var collapsed: Bool
public init(name: String,items: [Item],collapsed: Bool = false) {
self.name = name
self.items = items
self.collapsed = collapsed
}
}
您可以在静态代码中看到,我在public var sectionsData: [Section1] = [
Section1(name: "Beard",items: [Item(service: "Beard Trim",service_price: 1,barber_service_id: 1,service_duration: 30),Item(service: "Beard Line Up",service_duration: 30)],collapsed: true)
]
数组中添加了两个项目,现在这是我尝试使用Item
数据实现的代码
JSON
您可以在我的代码中看到,我为每个循环获取service.array?.forEach({ (sList) in
let item = Item(service: sList["service"].stringValue,service_price: sList["service_price"].intValue,barber_service_id: sList["barber_service_id"].intValue,service_duration: sList["service_duration"].intValue)
let sections = Section1(name: category_name,items: [item],collapsed: true)
self.sections.append(sections)
})
数据,但是现在像在静态代码中一样,我可以添加多个项目,以便在动态数据中执行该操作
有人可以帮我吗
解决方法
创建一个实例var来保存您的数据源。
var sectionsData: [Section1] = []
通过API响应创建部分
guard let array = service.array else {
return
}
let newSections: [Section1] = array.map { (sList) in
let item = Item(service: sList["service"].stringValue,service_price: sList["service_price"].intValue,barber_service_id: sList["barber_service_id"].intValue,service_duration: sList["service_duration"].intValue)
return Section1(name: category_name,items: [item],collapsed: true)
}
将此新数据添加到您的实例var
sectionsData.append(contentsOf: newSections)
重新加载表数据(在主线程上)