More than 1 year has passed since last update.

 これまで、若干の名前負け感があった Asset Catalog ですが、iOS 9 より Image Sets に加え Data Sets も持てるようになりました。つまり、画像以外のアセットも全て Assets.xcassets に放り込むことができます。

テキストファイルはもちろんのこと、

sugoi-text-file

音楽ファイルもいけるし

sugoi-music-file

動画ファイルもいけるし

sugoi-movie-file

あとは何でしょう。画像は画像でも、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 から解放されるのでした。楽しい!₍₍ (ง╹◡╹)ว ⁾⁾


  1. 主に私の 

  2. 主に私が