无法从Xcode 7中的资产目录中检索非jpg / png文件

时间:2015-06-14 16:36:15

标签: ios xcode asset-catalog xcode7

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

所以我在做这件事的方式是在将GIF /视频从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
   }()

所以现在路径是零。它无法找到该文件。有没有新的方法来检索数据集?

1 个答案:

答案 0 :(得分:3)

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

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

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上添加错误处理。