【问题标题】:SwiftUI: How to interstellare array of enums?SwiftUI:如何星际数组枚举?
【发布时间】:2022-11-01 20:17:42
【问题描述】:

我有一个枚举数组,其中每个枚举都包含图像或视频。我想遍历数组并获取每个枚举中的值。如果枚举包含一个图像,我想得到那个值,如果它包含一个视频,那么得到那个值。

那么如果枚举,我如何循环遍历数组?

这是我的代码:

import UIKit
import AVFoundation

enum ContentSource {
    case image(UIImage)
    case video(AVPlayer)
}

var post : [ContentSource] = []

【问题讨论】:

    标签: image video swiftui enums iteration


    【解决方案1】:

    您必须有一个switch 才能确定它在循环中的类型。

    var posts : [ContentSource] = []
    
    for post in posts {
        switch post {
        case .image(let uIImage):
            print("UIImage")
        case .video(let aVPlayer):
            print("UIImage")
        }
    }
    

    【讨论】:

      【解决方案2】:

      你可以尝试这样的事情:

      enum ContentSource: Hashable {
          case image(UIImage)
          case video(AVPlayer)
      }
      
      struct ContentView: View {
          @State var posts : [ContentSource] = []
          
          var body: some View {
              List(posts, id: .self) { item in
                  switch(item) {
                  case .image(let img):
                      Text(img.description) // show image
                  case .video(let avPlayer):
                      Text(avPlayer.description)  // play video
                  }
              }
              .onAppear {
                  let img = UIImage(systemName: "globe")!
                  let av = AVPlayer()
                  posts = [.image(img), .video(av)]
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

        你能试试这个吗,你可以得到相关的值并随心所欲地使用它们

        enum ContentSource {
            case image(UIImage)
            case video(AVPlayer)
        }
        
        var post :[ContentSource] = []
        
        let testContent = ContentSource.video(AVPlayer())
        
        switch testContent {
        case .image(let img):
            print("i got img")
        case .video(let video):
            print("i got video")
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-10
          • 1970-01-01
          • 2015-02-12
          • 1970-01-01
          • 1970-01-01
          • 2013-01-17
          相关资源
          最近更新 更多