2017-01-22 42 views
-1

我最近將代碼升級到了swift 3,並且我有2個與我的應用中的AVPlayer相關的錯誤。AVPlayer無法爲類型指定值類型

編輯:下面是聲明:

public var avPlayer = AVPlayer() 
public var avPlayerItem = AVPlayerItem?.self 

這裏我引用的功能:

func stream() { 
    let urlString = streamURLForSong 
    let urlItem = URL(string: urlString) 
    avPlayerItem = AVPlayerItem(url: urlItem!) // ERROR: Cannot assign value of type 'AVPlayerItem' to type 'AVPlayerItem?.Type?' 
    avPlayer = AVPlayer(playerItem: avPlayerItem!) // ERROR: Cannot convert value of type 'AVPlayerItem?.Type' (aka 'Optional<AVPlayerItem>.Type') to expected argument 'AVPlayerItem?' 
} 

此工作過,但使用的Xcode升級到斯威夫特3後,上述評論的錯誤被顯示。

我該如何解決這個問題?

在此先感謝!

+0

我們能看到你的'avPlayerItem'的聲明? – Moshe

+0

請顯示'avPlayerItem'和'avPlayer'聲明。 – shallowThought

+0

public var avPlayer = AVPlayer() public var avPlayerItem = AVPlayerItem?.self – Nick

回答

1

我能夠在Xcode操作系統中對這個函數進行輕微的修改。我的版本是這樣的:

import AVFoundation 

func stream() { 

let urlString = "http://google.com" 
let urlItem = URL(string: urlString) 
let avPlayerItem: AVPlayerItem? = AVPlayerItem(url: urlItem!) // ERROR: Cannot assign value of type 'AVPlayerItem' to type 'AVPlayerItem?.Type?' 
let avPlayer = AVPlayer(playerItem: avPlayerItem) // ERROR: Cannot convert value of type 'AVPlayerItem?.Type' (aka 'Optional<AVPlayerItem>.Type') to expected argument 'AVPlayerItem?' 

}

我做urlString一個虛擬地址,並且也改變了最後一行,這樣,我們不會強迫你解開路過時,它AVPlayerItemAVPlayer

編輯:

如果你想告訴雨燕,你想用這個語法來avPlayerItem使用的數據類型:

public var avPlayerItem: AVPlayerItem 

你所做的事是分配類本身作爲avPlayerItem變量的內容,所以數據類型實際上是AVPlayerItem?.Type?而不是AVPlayerItem?

1

這段代碼是錯誤的:

public var avPlayerItem = AVPlayerItem?.self 

刪除.self。該代碼使這類型而您想實例去這裏。現在刪除=並改用:來聲明類型。

舉一個簡單的例子,這個代碼是非法的:

var x = String?.self 
x = "howdy" // compile error 

這是需要什麼:

var x : String? 
x = "howdy" 
+0

這麼簡單的修復,非常感謝! – Nick

相關問題