Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AVPlayer无法将类型的值分配给类型_Ios_Swift3_Avplayer_Avplayeritem - Fatal编程技术网

Ios 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

我最近将代码升级到swift 3,我有两个错误与我的应用程序中的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?'
}
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从来都不正确。