Codable

作者: 王勋才 | 来源:发表于2021-08-14 13:32 被阅读0次
    //
    //  ContentView.swift
    //  LearnCodable
    //
    //  Created by wangxuncai on 2021/8/14.
    //
    
    import SwiftUI
    struct CustomerModel:Identifiable,Codable{
        //适用于基本数据类型,颜色不适用
        let id :String
        let name:String
        let points:Int
        let isPremium:Bool
        let r:Double
        let g:Double
        let b:Double
    }
    class CodableViewModel:ObservableObject{
        @Published var customer : CustomerModel? = nil
        
        init(){
            saveData()
            getData()
        }
        
        func getData() {
            guard let data =  UserDefaults.standard.data(forKey: "jsonData") else { return }
           // guard   let data = getJSONData() else {return}
            //把二进制数据还原成 顾客数据
            customer = try? JSONDecoder().decode(CustomerModel.self, from: data)
         
        }
        
        
        func saveData(){
            //初始化一个顾客
            let customer = CustomerModel(id: "abc", name: "Mike", points: 1000, isPremium: false, r: 0.9,g: 0.6,b: 0.3)
            
            //加密这这顾客数据成为二进制数据
            let jsonData = try? JSONEncoder().encode(customer)
            UserDefaults.standard.set(jsonData, forKey: "jsonData")
          
        }
    }
    
    
    struct ContentView: View {
       @StateObject var vm = CodableViewModel()
        var body: some View {
            VStack(spacing:20){
                if let customer = vm.customer{
                    Text(customer.id)
                    Text(customer.name)
                    Text("\(customer.points)")
                    Text(customer.isPremium.description)
                        .background(Color.init(red: customer.r, green: customer.g, blue: customer.b))
                }
            }
                .padding()
          
        }
    }
    
    
    
    

    相关文章

      网友评论

          本文标题:Codable

          本文链接:https://www.haomeiwen.com/subject/aztebltx.html