范型的一个简单应用

```swift

import SwiftUI

struct TextItem:Identifiable,Codable{

    var id = UUID().uuidString

    var text:String = ""


}

//终于写出了范型,这个太好用了。每一种语法的出现都是为了解决一种问题,提供某种方便。

//使用方法 let dataSaver = DataSaver<你要保存的数据类型>()

class DataSaver<T:Codable>{

    func saveData(items:[T],forkey:String){

        let encode = JSONEncoder()

        do{

            let data = try encode.encode(items)

            UserDefaults.standard.set(data, forKey: forkey)

        }

        catch

        {

            print(error.localizedDescription,"保存数据失败")

        }


    }

    func fetchData(forkey:String)->[T]{

        var results:[T] = []

        let decode = JSONDecoder()

        do{

            if let data = UserDefaults.standard.data(forKey: forkey){

                results =try decode.decode([T].self, from: data)

            }


        }

        catch

        {


        }

        return results

    }

}

class ViewModel:ObservableObject{

    //尖括号里指定范型的具体类型

    let dataSaver = DataSaver<TextItem>()

    @Published var textEditors:[TextItem] = []{

        didSet{

            saveData()

        }

    }

    let textEditorsSaverKey:String = "textEditorsSaverKey"

    init(){

        fetchData()

    }

    func saveData(){

        dataSaver.saveData(items: textEditors, forkey: textEditorsSaverKey)

    }

    func fetchData(){

        self.textEditors = dataSaver.fetchData(forkey: textEditorsSaverKey)

    }


}

//苹果应用商店|搜|王勋才|有我全部作品

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容