2016-06-08 57 views
0

请帮我解决我的代码,因为我有以下错误:Xcode的SWIFT - 不能援引“pathForResource”类型的参数列表

Cannot invoke 'pathForResource' with an argument list of type '(String!)'

的错误是在这条线的“(字符串!)”代码:

let urlpathString:String? = NSBundle.mainBundle().pathForResource(url) 

我全码:

import UIKit 
import AVKit 
import AVFoundation 
import MediaPlayer 

class ViewController: UIViewController { 

    let avPlayerViewControler = AVPlayerViewController() 
    var avPlayer:AVPlayer? 
    var videoNumber:Int! 
    var url:String! 

    override func viewDidLoad() { 
     super.viewDidLoad()  
    } 

    func playVideo() { 
     switch videoNumber { 
      case 1 : url="20" 
      case 2 : url="10" 
      default : break 

      let urlpathString:String? = NSBundle.mainBundle().pathForResource(url) 

      if let urlPath = urlpathString { 
       let movieUrl = NSURL(fileURLWithPath: urlPath) 
       self.avPlayer = AVPlayer(URL: movieUrl) 
       self.avPlayerViewControler.player = self.avPlayer 

      } 
     } 
    } 

    @IBAction func Button(sender: UIButton){ 
     videoNumber=1 
     playVideo() 
    } 

    @IBAction func Button2(sender: UIButton) { 
     videoNumber=2 
     playVideo() 
    } 
} 

回答

0

还有就是没有简单的方法,至少有第二个参数,例如pathForResource:ofType:

既然你需要一个NSURL无论如何,使用发布API的URL,与

func playVideo() { 
    switch videoNumber { 
    case 1 : url="20" 
    case 2 : url="10" 
    default : break 
    } 

    if let movieUrl = NSBundle.mainBundle().URLForResource(url, withExtension: "mp4") { 
    self.avPlayer = AVPlayer(URL: movieUrl) 
    self.avPlayerViewControler.player = self.avPlayer 
    } 
} 

更换整个if let表达你必须改变mp4到预期的延长。

+0

你好!感谢你!如果让你的表达与你的代码,我已经取代了整个。但我仍然得到错误。请帮助 –

+0

由于使用了不同的API,因此无法执行相同的错误。当然,你必须删除'let urlpathString:String?'这一行。 = NSBundle.mainBundle()。pathForResource(url)', – vadian

+0

我已经替换了代码,不再收到错误。但是视频不会在点击按钮上播放。有什么建议?谢谢 –

相关问题