2016-12-23 182 views
0

我想播放背景视频,但我遇到了一行代码的问题。我得到的,说:“不能调用类型‘URL’没有安排初始化”在这一行错误“开放VAR的contentURL:URL =网址()”播放背景视频

open class VideoSplashViewController: UIViewController { 

    fileprivate let moviePlayer = AVPlayerViewController() 
    fileprivate var moviePlayerSoundLevel: Float = 1.0 
    open var contentURL: URL = URL() { 
    didSet { 
     setMoviePlayer(contentURL) 
    } 
    } 

    open var videoFrame: CGRect = CGRect() 
    open var startTime: CGFloat = 0.0 
    open var duration: CGFloat = 0.0 
    open var backgroundColor: UIColor = UIColor.black { 
    didSet { 
    view.backgroundColor = backgroundColor 
    } 
} 

我不知道如何解决这个问题,请帮助

回答

1

错误消息是不言自明,URL类没有不带参数的:)

如果你看一看URL类的初始化 - 按住CMD键点击URL - ,你会发现,有这样的没有初始化:

init() {} 

因此,你不能只是写URL(),因为需要上述初始化。然而,有一个各种URL类其他初始化,如:

init?(string: String) {} 
init(fileURLWithPath path: String) 
... 

您可以使用其中的任何初始化的contentURL实例。

open var contentURL: URL = URL(string: "") {/**/} 
open var contentURL: URL = URL(fileURLWithPath: "") {/**/} 

What is Initializer?

2

你应该将以下代码

open var contentURL: URL = URL() { 
didSet { 
    setMoviePlayer(contentURL) 
}} 

与此:

public var contentURL: NSURL = NSURL() { 
didSet { 
    setMoviePlayer(contentURL) 
}} 

这将解决您的问题。

+0

您可以添加一个解释为什么你应该使用第二个代码块?这会改善你的答案('这将解决你的问题'不是很有帮助)。 –

+0

因为我有同样的问题,我通过替换这个问题来解决我的问题。 –

+0

我的评论意思是,其他用户很高兴知道哪些更改适合您。但是,如果你自己不知道,就很难解释。 –