无法从 Xcode 的资产目录中检索非 jpg/png 文件 7
Can't retrieve non jpg/png files from the Asset Catalog in Xcode 7
我想从 Xcode 的资产目录中检索非 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
}()
所以现在路径为零。它找不到文件。是否有检索数据集的新方法?
显然 pathForResource
不会起作用,因为该资源不再在您的应用程序包中 - 它在您的资产目录中。实际上,它不再有任何 "path".
您必须使用新的 NSDataAsset class,它可以按名称从资产目录中提取任意数据。为了模拟您的 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
.
上添加错误处理
我想从 Xcode 的资产目录中检索非 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
}()
所以现在路径为零。它找不到文件。是否有检索数据集的新方法?
显然 pathForResource
不会起作用,因为该资源不再在您的应用程序包中 - 它在您的资产目录中。实际上,它不再有任何 "path".
您必须使用新的 NSDataAsset class,它可以按名称从资产目录中提取任意数据。为了模拟您的 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
.