swift 计算结构中的结构数

2ic8powd  于 2022-10-31  发布在  Swift
关注(0)|答案(1)|浏览(133)

我有一个结构体,看起来像这样:

struct Audio: Hashable, Codable, Identifiable {
    let id: Int
    let refrenceID: Int
    let channels: [Channel]
}

struct Channel: Hashable, Codable {
    let audio: String
    let panning: Double
    let volume: Double
    let crossfade: Bool
    let random: Bool
    let frequency: Int?
    let period: Int?
}

Audio可以包含任意数量的结构体Channel,但我很难调用和引用它们。我试图在Picker()中将每个Channel作为一个选项卡。

struct AudioAdjust: View {
    var audio: Audio //Read in from JSON file
    var nChannel = 1

    var body: some View {
                Picker("Select Channel to Adjust", selection: channels[0]) {
                    ForEach(channels, id: audio) {
                        Text(nChannel)
                        nChannel += nChannel
                    }
                }
                .pickerStyle(.segmented)
                .padding(.horizontal)
nkcskrwz

nkcskrwz1#

SwiftUI中的ForEach不像过程编程中的传统for循环那样工作。你不应该在循环中做任何像nChannel += nChannel那样的“工作”。
这里的代码还有一些其他问题--选择应该是@State,需要迭代数组,等等。
以下内容应该可以帮助您入门,但同时也是查看一些SwiftUI教程以了解SwiftUI的一些基础知识的好时机。

struct AudioAdjust: View {
    var audio: Audio
    @State private var selectedChannel: Audio.ID = 0

    var body: some View {
                Picker("Select Channel to Adjust", selection: $selectedChannel) {
                    ForEach(audio.channels) { channel in
                        Text(channel.audio)
                    }
                }
                .pickerStyle(.segmented)
                .padding(.horizontal)

相关问题