2

我想从 Xcode 7 中的资产目录中检索非 jpg/png 文件。我看到现在可以将任何类型的数据添加到资产目录中。

所以我这样做的方式是在将 gif/video 从 Xcode 项目移动到资产目录之前工作

private struct WalkthroughVideo {
    static let name = "tokyo"
    static let type = "mp4"
  }

private var moviePlayer : AVPlayerViewController? = {
    guard let path = NSBundle.mainBundle().pathForResource(WalkthroughVideo.name, ofType: WalkthroughVideo.type) else {
      return nil
    }
    let url = NSURL.fileURLWithPath(path)
    let playerViewController = AVPlayerViewController()
    playerViewController.player = AVPlayer(URL: url)
    return playerViewController
   }()

所以现在路径为零。它找不到文件。有没有一种新的方法来检索数据集?

4

1 回答 1

4

显然pathForResource不会工作,因为资源不再在您的应用程序包中 - 它在您的资产目录中。实际上,它不再有任何“路径”。

您必须使用新的 NSDataAsset 类,它可以按名称从资产目录中获取任意数据。为了模拟您的tokyo.mp4示例,我使用了一个 AIFF 声音文件,作为一个名为主题的数据集(在通用插槽中)存储在我的资产目录中。这是我的完整测试代码(在我的根视图控制器中):

var player : AVAudioPlayer!
override func viewDidLoad() {
    super.viewDidLoad()
    if let asset = NSDataAsset(name: "theme") {
        let data = asset.data
        self.player = try! AVAudioPlayer(data:data)
        self.player.play()
    }
}

瞧,声音响起!当然在现实生活中我会在上面添加错误处理try

于 2015-06-14T17:13:57.787 回答