Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同类型对象数组的SwiftUI抽象视图_Swift_Swiftui_Swiftui List - Fatal编程技术网

不同类型对象数组的SwiftUI抽象视图

不同类型对象数组的SwiftUI抽象视图,swift,swiftui,swiftui-list,Swift,Swiftui,Swiftui List,我想列出两种类型的对象(MotorBikeRow和WithFootBikeRow将是此列表中两种稍有不同的行视图) 我来自Java,我自然会创建一个名为Bike的抽象类。这样我就有了两种(当然是更多)对象类型的列表: @Binding var bikeList:[Bike] 但问题是如何在Swift中实现这个“抽象类”? 我目前正在使用一个名为Bike的协议,这两个structs MotorBike和WithFootBike都符合该协议 List { ForEach(...) i in

我想列出两种类型的对象(MotorBikeRow和WithFootBikeRow将是此列表中两种稍有不同的行视图)

我来自Java,我自然会创建一个名为Bike的抽象类。这样我就有了两种(当然是更多)对象类型的列表:

@Binding var bikeList:[Bike]
但问题是如何在Swift中实现这个“抽象类”? 我目前正在使用一个名为Bike的协议,这两个structs MotorBike和WithFootBike都符合该协议

List {
    ForEach(...) i in {
         if bikeList[i] is MotorBike {
              MotorBikeRow(motorBike: $bikeList[i]) << error
         } else {
              WithFootBikeRow(withFootBike: $bikeList[i]) << error
         }
    }
}
所以问题来了

  • 如何从自行车到摩托比克/带足球的比克? 当然我用过这个“把戏”:但是内存泄漏

  • 这是正确的SwiftUI/Swift方法吗?也许我完全错了,太受“Java”的影响了,以至于我看不到更优雅的解决方案


  • 我认为这是不可能的。但我只认为是自行车类型类还是结构?行视图需要对它们进行变异吗?@raynok它们是结构化的,我认为这是不可能的。但我只认为是自行车类型类还是结构?行视图需要对它们进行变异吗?@raynok它们是struct
    @Binding var motorBike:MotorBike
    @Binding var withFootBike:WithFootBike