Ios AVPlayer无法将类型的值分配给类型
我最近将代码升级到swift 3,我有两个错误与我的应用程序中的AVPlayer有关 编辑:以下是声明:Ios AVPlayer无法将类型的值分配给类型,ios,swift3,avplayer,avplayeritem,Ios,Swift3,Avplayer,Avplayeritem,我最近将代码升级到swift 3,我有两个错误与我的应用程序中的AVPlayer有关 编辑:以下是声明: public var avPlayer = AVPlayer() public var avPlayerItem = AVPlayerItem?.self 以下是我引用的函数: func stream() { let urlString = streamURLForSong let urlItem = URL(string: urlString) avPlayerI
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?'
}
func流(){
设urlString=streamURLForSong
设urlItem=URL(字符串:urlString)
avPlayerItem=avPlayerItem(url:urlItem!)//错误:无法将“avPlayerItem”类型的值分配给“avPlayerItem?”类型
avPlayer=avPlayer(playerItem:avPlayerItem!)//错误:无法将类型为“avPlayerItem?”的值转换为预期参数“avPlayerItem”
}
这在以前是有效的,但是在使用Xcode升级到Swift 3之后,上面注释的错误会显示出来
我该如何解决这个问题
提前谢谢 我能够在一个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?'
}
您所做的是将类本身指定为
avPlayerItem
变量的内容,因此数据类型实际上是avPlayerItem?.type?
而不是avPlayerItem?
我能够在Xcode PlayerItem中对该函数进行编译,只需稍加修改。我的版本如下:
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?'
}
您所做的是将类本身指定为avPlayerItem
变量的内容,因此数据类型实际上是avPlayerItem?.type?
而不是avPlayerItem?
此代码错误:
public var avPlayerItem = AVPlayerItem?.self
删除.self
。这段代码使它成为一种类型,而您希望在这里有一个实例。现在删除=
并使用:
来声明类型
举一个简单的例子,此代码是非法的:
var x = String?.self
x = "howdy" // compile error
这就是我们所需要的:
var x : String?
x = "howdy"
此代码错误:
public var avPlayerItem = AVPlayerItem?.self
删除.self
。这段代码使它成为一种类型,而您希望在这里有一个实例。现在删除=
并使用:
来声明类型
举一个简单的例子,此代码是非法的:
var x = String?.self
x = "howdy" // compile error
这就是我们所需要的:
var x : String?
x = "howdy"
我们可以看一下您对
avPlayerItem
的声明吗?请显示avPlayerItem
和avPlayer
声明。public var avPlayer=avPlayerItem()public var avPlayerItem=avPlayerItem?.self“这以前是有效的”不,从来没有。说avPlayerItem=avPlayerItem?.self从来都不正确。我们可以看看你对avPlayerItem
的声明吗?请显示avPlayerItem
和avPlayerItem
声明。public var avPlayerItem=avPlayerItem()public var avPlayerItem=avPlayerItem?.self“这以前是有效的”不,从来没有。说avPlayerItem=avPlayerItem?.self从来都不正确。