2016-06-08 59 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

我已經替換了代碼,不再收到錯誤。但是視頻不會在點擊按鈕上播放。有什麼建議?謝謝 –

相關問題