【问题标题】:Can't retrieve non jpg/png files from the Asset Catalog in Xcode 7无法从 Xcode 7 中的资产目录中检索非 jpg/png 文件
【发布时间】:2015-08-30 03:55:35
【问题描述】:

我想从 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
   }()

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

【问题讨论】:

  • 您能打印一下路径吗?
  • 现在路径为零。找不到文件
  • 你清理和构建项目了吗?
  • 是的,还删除了派生数据。
  • 资产目录是否适用于您的目标?

标签: ios xcode asset-catalog xcode7


【解决方案1】:

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

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

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

【讨论】:

  • 我想我也误解了这个功能。我虽然它不仅仅是按需资源^^。但是对于按需资源,它直接下载存储在App Store上的资源,所以在开发的时候,我们不能使用这个功能,不是吗?
  • 我观看了 Xcode 7 上的新增功能(当他谈到按需资源、标签时)。我刚刚看到有一个点播资源视频。我会检查的。
  • 好吧,我完全错了。标记我。但是我已经更正了我的答案!再次标记我。我很抱歉,但我们都在一起学习......
  • 很好,你在哪里找到的?你知道是否可以直接从情节提要中做到这一点(例如 UIImage )
  • NSDataAsset 仅适用于 iOS 9。是否可以在 iOS 8 中访问数据资产文件?
猜你喜欢
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多