Guest User

Untitled

a guest
Feb 24th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. // 1. define Album Codalble
  2.  
  3. struct Album: Codable {
  4. let title : String
  5. let artist : String
  6. let genre : String
  7. let coverUrl : String
  8. let year : String
  9. }
  10.  
  11. // 2. save the album as json format
  12. private var documents: URL {
  13. return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
  14. }
  15.  
  16. private enum FileNames {
  17. static let Albums = "albums.json"
  18. }
  19.  
  20. func saveAlbums() {
  21. let url = documents.appendingPathComponent(FileNames.Albums)
  22. print(url)
  23. guard let encodedData = try? JSONEncoder().encode(albums) else {
  24. return
  25. }
  26. try? encodedData.write(to: url)
  27. }
  28.  
  29. // 3. 放置 album.json 去 main Bundle
  30. // 4. 更改 Persistency.swift init方法
  31. init() {
  32.  
  33. let savedURL = documents.appendingPathComponent(FileNames.Albums)
  34. var data = try? Data(contentsOf: savedURL)
  35. if data == nil, let bundleURL = Bundle.main.url(forResource: FileNames.Albums, withExtension: nil) {
  36. data = try? Data(contentsOf: bundleURL)
  37. }
  38.  
  39. if let albumData = data, let decodedAlbums = try? JSONDecoder().decode([Album].self, from: albumData){
  40. albums = decodedAlbums
  41. saveAlbums()
  42. }
  43. }
Add Comment
Please, Sign In to add comment