Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 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()
- }
- }
Add Comment
Please, Sign In to add comment