For-in 循环需要“[UserVehicles]?” 符合“顺序”;你的意思是解开可选的?迅速

Yud*_*udi 10 for-loop list for-in-loop ios swift

我有一个用于 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

}

Run Code Online (Sandbox Code Playgroud)

我已经使用回调函数将它传递给我的 ViewController,现在我想检查 useVehiclers 列表,有多少辆车有基本保险。基本上,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)")
                }
            }
            
            
            
        }
        
    }

Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

你知道如何解决吗?

Sh_*_*han 18

您需要为 optional 提供默认值作为一种好习惯,而不是强制展开

for i in vehicleList?._embedded.userVehicles ?? [] { }
Run Code Online (Sandbox Code Playgroud)

  • 亲爱的苹果,您能否提供代码建议,或者至少对问题有一个更好的解释?谢谢你! (3认同)