iOS 디자인 모드 - 비망록 모드 - Memento

3265 단어
비망록 모드 는 대상 의 내 적 상 태 를 포착 하고 구상 화 시킨다.다시 말 하면 대상 을 어디 에 두 었 다가 나중에 어느 시간 에 다시 회복 시 키 는 것 이다. 그 자체 의 포장 성 을 깨 뜨리 지 않 고 개인 데 이 터 는 여전히 개인 데이터 이다.
비망록 모드 를 어떻게 사용 합 니까?
NSUserDefaults
func saveCurrentState() {
  NSUserDefaults.standardUserDefaults().setInteger(currentAlbumIndex, forKey: "currentAlbumIndex")
}

func loadPreviousState() {
  currentAlbumIndex = NSUserDefaults.standardUserDefaults().integerForKey("currentAlbumIndex")
}

압축 파일 - 보관
애플 은 압축 파일 의 방법 을 통 해 비망록 모델 을 실현 한다.그것 은 대상 을 흐름 으로 바 꾸 어 내부 속성 이 노출 되 지 않 은 상태 에서 데 이 터 를 저장 했다.
압축 파일 을 어떻게 사용 합 니까?
//  ,      Album    NSCoding   ,           。
class Album: NSObject, NSCoding {
  //  
  required init(coder decoder: NSCoder)   {
      super.init()
      self.title = decoder.decodeObjectForKey("title") as String?
      self.artist = decoder.decodeObjectForKey("artist") as String?
      self.genre = decoder.decodeObjectForKey("genre") as String?
      self.coverUrl = decoder.decodeObjectForKey("cover_url") as String?
      self.year = decoder.decodeObjectForKey("year") as String?
  }

  //  
  func encodeWithCoder(aCoder: NSCoder) {
      aCoder.encodeObject(title, forKey: "title")
      aCoder.encodeObject(artist, forKey: "artist")
      aCoder.encodeObject(genre, forKey: "genre")
      aCoder.encodeObject(coverUrl, forKey: "cover_url")
      aCoder.encodeObject(year, forKey: "year")
  }
}

PersistencyManager.swift
//      
func saveAlbums() {
    var filename = NSHomeDirectory().stringByAppendingString("/Documents/albums.bin")
    let data = NSKeyedArchiver.archivedDataWithRootObject(albums)
    data.writeToFile(filename, atomically: true)
} 

override init() {
    super.init()
    if let data = NSData(contentsOfFile: NSHomeDirectory().stringByAppendingString("/Documents/albums.bin")) {
        //      
        let unarchiveAlbums = NSKeyedUnarchiver.unarchiveObjectWithData(data) as [Album]?
        if let unwrappedAlbum = unarchiveAlbums {
            albums = unwrappedAlbum
        }
    } else {
        //        
        createPlaceholderAlbum()
    }
}

func createPlaceholderAlbum() {
    //Dummy list of albums
    let album1 = Album(title: "Best of Bowie",
             artist: "David Bowie",
             genre: "Pop",
             coverUrl: "http://www.coversproject.com/static/thumbs/album/album_david%20bowie_best%20of%20bowie.png",
             year: "1992")

    let album2 = Album(title: "It's My Life",
           artist: "No Doubt",
           genre: "Pop",
           coverUrl: "http://www.coversproject.com/static/thumbs/album/album_no%20doubt_its%20my%20life%20%20bathwater.png",
           year: "2003")

    let album3 = Album(title: "Nothing Like The Sun",
               artist: "Sting",
           genre: "Pop",
           coverUrl: "http://www.coversproject.com/static/thumbs/album/album_sting_nothing%20like%20the%20sun.png",
           year: "1999")
    albums = [album1, album2, album3]
    saveAlbums()
}


좋은 웹페이지 즐겨찾기