首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVKit给出了以下错误:在"name class“中隐式地展开nil

AVKit给出了以下错误:在"name class“中隐式地展开nil
EN

Stack Overflow用户
提问于 2022-10-18 13:23:57
回答 1查看 24关注 0票数 -2
代码语言:javascript
复制
I have a series of videos in one folder.

in another folder I have the following code:


import Foundation
import AVKit

var videoPlayer: AVPlayer?

func playVideo(filename: String, fileFormat: String) -> AVPlayer {
    if Bundle.main.url(forResource: filename, withExtension: fileFormat) != nil {
        videoPlayer = AVPlayer(url: Bundle.main.url(forResource: filename, withExtension: fileFormat)!)
        videoPlayer?.play()
    }
    return videoPlayer!
}

在另一个文件夹中,我有以下代码,但在活动中,它不会在SwiftUi中播放视频,因为它给了我以下错误:XXXXXXX.swift中的隐式解包装零值。

代码语言:javascript
复制
import SwiftUI
import AVKit

struct VideoPlayerView: View {
    // MARK: - PROPERTIES
    
    var videoSelected: String
    var videoTitle: String
    
    
    // MARK: - BODY
    var body: some View {
        VideoPlayer(player: playVideo(filename: videoSelected, fileFormat: "mp4"))
    }
}

// MARK: - PREVIEW
struct VideoPlayerView_Previews: PreviewProvider {
    static var previews: some View {
        VideoPlayerView(videoSelected: "lion", videoTitle: "Lion")
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-10-18 16:07:12

如果您的文件不存在,则无法显示VideoPlayer

代码语言:javascript
复制
var body: some View {
  AVPlayer(fileName: videoSelected, fileFormat: "mp4").map(VideoPlayer.init)
}
代码语言:javascript
复制
extension AVPlayer {
  convenience init?(fileName: String, fileFormat: String) {
    guard let url = Bundle.main.url(forResource: fileName, withExtension: fileFormat)
    else { return nil }

    self.init(url: url)
    play()
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74111773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档