我有一個列舉陣列,其中每個列舉都包含影像或視頻。我想遍歷陣列并獲取每個列舉中的值。如果列舉包含一個影像,我想得到那個值,如果它包含一個視頻,那么得到那個值。
那么如果列舉,我如何回圈遍歷陣列?
這是我的代碼:
import UIKit
import AVFoundation
enum ContentSource {
case image(UIImage)
case video(AVPlayer)
}
var post : [ContentSource] = []
uj5u.com熱心網友回復:
你能試試這個嗎,你可以得到相關的值并隨心所欲地使用它們
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")
}
uj5u.com熱心網友回復:
你必須switch知道它在回圈中是什么型別。
import AVKit
var posts : [ContentSource] = []
ForEach(posts){ post in
switch post {
case .image(let uIImage):
Image(uiImage: uIImage)
case .video(let aVPlayer):
VideoPlayer(player: aVPlayer)
}
}
uj5u.com熱心網友回復:
你可以嘗試這樣的事情:
enum ContentSource: Hashable {
case image(UIImage)
case video(AVPlayer)
}
struct ContentView: View {
@State var posts : [ContentSource] = []
var body: some View {
ScrollView {
ForEach(posts, id: \.self) { item in
switch(item) {
case .image(let img):
Image(uiImage: img).padding(22)
case .video(let avPlayer):
VideoPlayer(player: avPlayer)
}
}
}
.onAppear {
// for testing
let img = UIImage(systemName: "globe")!
let av = AVPlayer()
// let av = AVPlayer(url: Bundle.main.url(forResource: "testvideo", withExtension: "MOV")!)
posts = [.image(img), .video(av)]
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/525998.html
標籤:迅速图片视频枚举迭代
