Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide

Beginning iPhone Development with Swift: Exploring the iOS SDK

Beginning iPhone Development with Swift: Exploring the iOS SDK

  • 作者: David Mark,Jack Nutting,Kim Topley,Fredrik Olsson,Jeff LaMarche
  • 出版社/メーカー: Apress
  • 発売日: 2014/11/19
  • メディア: Kindle版
  • この商品を含むブログを見る

お気に入りフォントを管理するクラスFavoritesListをコーディングしました。しかし、よくみるとイニシャライザに無理矢理guardを入れましたが、こういうケースは「??」を使った方がすっきりしました。

FavoritesListクラスの完成形は次の通りです。

import Foundation
import UIKit

class FavoritesList {

 static let sharedFavoriteList: FavoritesList = FavoritesList()

 private(set) var favorites: [String] 
 
 private init() {
  let defaults = NSUserDefaults.standardUserDefaults()
  let storedFavorites = defaults.objectForKey("Favorites") as? [String]
  favorites = storedFavorites ?? []
 }

 func addFavorite(fontName: String) {
  guard favorites.contains(fontName) else {
   favorites.append(fontName)
   saveFavorites()
   return
  }
 }
    
 func removeFavorite(fontName: String) {
  if let index = favorites.indexOf(fontName) {
   favorites.removeAtIndex(index)
   saveFavorites()
  }
 }
    
 private func saveFavorites() {
  let defaults = NSUserDefaults.standardUserDefaults()
  defaults.setObject(favorites, forKey: "favorites")
  defaults.synchronize()
 }
}

イニシャライザがすっきりしました。簡単なコーディングでも本当に色々バリエーションがありますね。こういうことを考えながらプログラミングするって楽しいですね。

今日はこれだけ(^^;)