如何快速通过变量通过变量?

时间:2020-05-18 15:16:13

标签: ios swift uitableview uiviewcontroller

这是我的主UITableViewController中的代码块,其类别为InventoryTableViewController

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        super.prepare(for: segue, sender: sender)
        switch segue.identifier! {
            case "detailSegue":
                guard let inventoryDetail = segue.destination as? InventoryDetailView else {
                    fatalError("Unexpected destination: \(segue.destination)")
                }
                guard let selectedVehicleCell = sender as? InventoryTableViewCell else {
                    fatalError("Unexpected sender: \(String(describing: sender))")
                }
                guard let indexPath = tableView.indexPath(for: selectedVehicleCell) else {
                    fatalError("The selected cell is not being displayed by the table")
                }
                let selectedVehicle = vehicles[indexPath.row]
                inventoryDetail.vehicle = selectedVehicle as? InventoryDetailView.Inventory
                printGenericInfo(selectedVehicle)
                default:
                fatalError("Unexpected Segue Identifier; \(String(describing: segue.identifier))")
        }
   }

   func printGenericInfo<T>(_ value: T) {

        let t = type(of: value as Any)
        print("'\(value)' of type '\(t)'")
   }

我正在尝试通过selectedVehicle。当我打印值和类型时,它如下(正确):

库存(id:1004,年份:“ 2014”,品牌:“ MakeWith15Chars”,型号: “ ModelWith15Chars”,正文:“ BodyWith15Chars”,内部:“ Hickory”, 外观:“磁性灰色”,Vin:“ 2C4RDGCG0FR805928”,英里:“ 10450”, msrp:“ 33,800.00”,成本:“ 28,100.00”),类型为库存

我的InventoryDetailView中的代码块如下:

class InventoryDetailView: UIViewController {

    var vehicle: Inventory!
    struct Inventory: Hashable, Codable, Identifiable {
                var id: Int
                var year: String
                var make: String
                var model: String
                var body: String
                var interior: String
                var exterior: String
                var vin: String
                var miles: String
                var msrp: String
                var cost: String
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        yearMakeLabel.text = vehicle?.year
    }
}

当我在InventoryDe​​tailView中打印车辆的值为nil时。为什么?我在做什么错了?

1 个答案:

答案 0 :(得分:-1)

我认为,首先,您必须删除此行super.prepare(for: segue, sender: sender),因为您不需要调用它