これまで、若干の名前負け感があった Asset Catalog ですが、iOS 9 より Image Sets に加え Data Sets も持てるようになりました。つまり、画像以外のアセットも全て Assets.xcassets に放り込むことができます。
テキストファイルはもちろんのこと、
音楽ファイルもいけるし
動画ファイルもいけるし
あとは何でしょう。画像は画像でも、Animated GIF や SVG などが便利そうですね。
アセットを取り出すときは、これまた iOS 9 より追加された NSDataAsset
を使います。
if let asset = NSDataAsset(name: "sugoi-text-file") {
let text = String(data: asset.data, encoding: .utf8)
}
if let asset = NSDataAsset(name: "sugoi-music-file") {
self.audioPlayer = try! AVAudioPlayer(data: asset.data)
self.audioPlayer.play()
}
if let asset = NSDataAsset(name: "sugoi-movie-file") {
let videoUrl = URL(string: "\(NSHomeDirectory())/Documents/sugoi-movie-file")!
try! asset.data.write(to: videoUrl, options: [.atomic])
let playerItem = AVPlayerItem(url: videoUrl)
self.videoPlayer = AVPlayer(playerItem: playerItem)
...
// この例だとかえって手間が増えている疑惑
}
こうしてエンジニアは、アセットを追加する度に心を濁らせてくる1 .xcodeproj や、使い方を覚えられない2 NSBundle
から解放されるのでした。楽しい!₍₍ (ง╹◡╹)ว ⁾⁾