Skip to content

Instantly share code, notes, and snippets.

@KrisYu
Created February 13, 2018 03:40
Show Gist options
  • Save KrisYu/037b21709150c481d25367ddf4012f6e to your computer and use it in GitHub Desktop.
Save KrisYu/037b21709150c481d25367ddf4012f6e to your computer and use it in GitHub Desktop.
// 1. define Album Codalble
struct Album: Codable {
let title : String
let artist : String
let genre : String
let coverUrl : String
let year : String
}
// 2. save the album as json format
private var documents: URL {
return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
}
private enum FileNames {
static let Albums = "albums.json"
}
func saveAlbums() {
let url = documents.appendingPathComponent(FileNames.Albums)
print(url)
guard let encodedData = try? JSONEncoder().encode(albums) else {
return
}
try? encodedData.write(to: url)
}
// 3. 放置 album.json 去 main Bundle
// 4. 更改 Persistency.swift init方法
init() {
let savedURL = documents.appendingPathComponent(FileNames.Albums)
var data = try? Data(contentsOf: savedURL)
if data == nil, let bundleURL = Bundle.main.url(forResource: FileNames.Albums, withExtension: nil) {
data = try? Data(contentsOf: bundleURL)
}
if let albumData = data, let decodedAlbums = try? JSONDecoder().decode([Album].self, from: albumData){
albums = decodedAlbums
saveAlbums()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment