我最近将我的代码升级到swift 3,并且我的应用程序中有2个与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升级到Swift 3后,会显示上面提到的错误。
我该如何解决这个问题?
提前致谢!
答案 0 :(得分:1)
我能够通过在Xcode游乐场中稍作修改来编译此函数。我的版本看起来像这样:
AVPlayerItem
我将urlString设为虚拟地址,并且还更改了最后一行,以便我们在将AVPlayer
传递给avPlayerItem
时强制解包。
修改强>
如果您尝试告诉Swift要用于public var avPlayerItem: AVPlayerItem
的数据类型,您希望使用以下语法:
avPlayerItem
您所做的是将类本身指定为AVPlayerItem?.Type?
变量的内容,因此数据类型实际上是AVPlayerItem?
而不是ActionListener
。
答案 1 :(得分:1)
此代码错误:
public var avPlayerItem = AVPlayerItem?.self
删除.self
。该代码使其成为类型,而您希望实例转到此处。现在删除=
并使用:
来声明类型。
举一个更简单的例子,这段代码是非法的:
var x = String?.self
x = "howdy" // compile error
这就是所需要的:
var x : String?
x = "howdy"