【发布时间】:2021-01-31 20:44:29
【问题描述】:
我有一个用于 API 返回的数据模型,它是这样的:
struct VehicleData: Codable {
let _embedded: Embedded
}
struct Embedded: Codable {
let userVehicles: [UserVehicles]
}
struct UserVehicles: Codable {
let id: String
let images: [String]
let userId: String
let vehicle: Vehicle
let originalPrice: OriginalPrice
let hasBasicInsurance: Bool
}
我已经使用回调函数将它传递给我的 ViewController,现在我想在 useVehicles 列表中查看有多少车辆有基本保险。基本上,vehicleList?._embedded.userVehicles[i] = true
这是我在 ViewController 中使用车辆数据的功能代码:
var vehicleManager = VehicleManager()
var vehicleList: VehicleData?
var i: Int = 0
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
vehicleManager.retrieveUserVehicle()
vehicleManager.onDataUpdate = { [weak self] (data: VehicleData) in
self?.useData(data: data)
}
tableView.dataSource = self
tableView.delegate = self
tableView.tableFooterView = UIView() //remove empty tableView cells
tableView.register(UINib(nibName: Constants.vehicleListCellNibName, bundle: nil), forCellReuseIdentifier: Constants.vehicleListToBeInsuredIdentifier)
}
func useData(data: VehicleData) {
vehicleList = data
// code below has issues....
for i in [vehicleList?._embedded.userVehicles] {
if let vechile = vehicleList?._embedded.userVehicles[i].hasBasicInsurance {
if vehicle == true {
i = i + 1
print(">>number of of insured vehidle: \(i)")
} else {
print(">>>number of of insured vehidle: \(i)")
}
}
}
}
你知道怎么解决吗?
【问题讨论】:
-
将您的数组声明更改为非可选并使用空集合对其进行初始化
-
var vehicleList: [VehicleData] = [] -
感谢 Leo,我想我确实清楚地发布了问题,我再次编辑。 vehicleList 本身不是一个数组。
vehicleList._embedded.userVehicles是一个数组。[]。这就是为什么要找到一种方法在 [] 内循环,并检查vehicleList._embedded.userVehicles[I].hasBasicInsurance = true -
typo.... 应该是*没有清楚地发布问题。
标签: ios swift list for-loop for-in-loop