2016-12-23 9 views
0

Ich versuche, ein Hintergrundvideo zu spielen, aber ich habe ein Problem mit einer Codezeile. Ich erhalte eine Fehlermeldung, die besagt, an dieser Linie „Can not Initialisierer für Typen‚URL‘ohne Vereinbarungen berufen“ „open var contentURL: URL = URL()“Hintergrundvideo abspielen

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 
    } 
} 

Ich weiß nicht, wie dieses Problem zu beheben, bitte helfen

Antwort

1

Die Fehlermeldung selbsterklärend ist, URL-Klasse ohne Argumente nicht Initialisierung haben :)

Wenn Sie einen Blick auf URL nehmen Klasse - Halten Sie CMD-Taste und Klicken Sie auf URL -, werden Sie feststellen, dass es keine Initialisierer ist wie folgt:

init() {} 

Deshalb kann man nicht einfach URL schreiben(), weil das die oben initializer erfordert. Allerdings gibt es eine Vielzahl von anderen initializers in URL-Klasse wie zum Beispiel:

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

Sie können jede von ihnen nutzen die contentURL Instanz zu initialisieren.

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

What is Initializer?

2

Sie sollten den folgenden Code

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

mit diesem ersetzen:

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

Diese Ihre Probleme beheben.

+0

Können Sie _why_ eine Erklärung hinzufügen, sollten Sie den zweiten Codeblock verwenden? Dies würde Ihre Antwort verbessern ("das wird Ihre Probleme beheben" ist nicht sehr hilfreich). –

+0

weil ich das gleiche Problem habe und ich mein Problem gelöst habe, indem ich das ersetzt habe. –

+0

Was ich mit meinem Kommentar meinte, ist, dass es für andere Benutzer gut ist zu wissen, welche Änderung für Sie funktioniert hat. Aber wenn Sie es selbst nicht wissen, ist es schwer zu erklären. –