实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(2)

简介: 实战教程·元宇宙来了,准备好你的电子名片了吗?(八)

写入本地数据

确定文件夹后,我们创建一个方法将数据写入到本次存储中,如下代码所示:

swift

复制代码

//写入本地数据
func saveItems() {
    let encoder = PropertyListEncoder()
    do {
        let data = try encoder.encode(models)
        try data.write(to: dataFilePath(), options: Data.WritingOptions.atomic)
    } catch {
        print("错误信息: (error.localizedDescription)")
    }
}

image.png

上述代码中,我们使用编码器PropertyListEncoder将对象实例与XML数据格式之间进行互相转换,作用是使得原始数据能够在系统中进行传输,传输的数据通过dataFilePath方法进行写入存储中,我们将整个写入存储的操作创建一个方法saveItems。

我们什么时候会使用到将数据写入存储呢?是的,在每次数据发生变化时。因此我们可以在ViewModel视图模型创建的方法中调用saveItems方法,如下图所示:

image.png

写入本次存储保存后,我们如果使用到网络请求的方法时,还需要将网络请求回来的数据也写入到本次存储中,以及在页面加载时读取本次存储的内容。

加载本地数据

所以我们还需要创建一个读取本地存储数据的方法,将上一次存起来的数据在下一次打开时加载出来,如下代码所示:


// 加载本地数据
func loadItems() {
    let path = dataFilePath()
    // 如果没有数据则跳过
    if let data = try? Data(contentsOf: path) {
        let decoder = PropertyListDecoder()
        do {
            models = try decoder.decode([Model].self, from: data)
        } catch {
            print("错误提示: (error.localizedDescription)")
        }
    }
}

image.png

上述代码中,我们创建了一个读取本地数据的方法loadItems,在loadItems方法中,我们首先判断数据路径是否存在,如果存在则执行使用编码器PropertyListEncoder传输数据,将符合Model数据模型的数据加载到models数据集中,如果失败则输出打印错误信息。

初始化本地数据

完成后,我们需要在应用初始化时,读取本次数据的方法,如下代码所示:


init() {
    loadItems()
}

image.png

完成后,我们来到ContentView视图,创建一条数据并刷新模拟器预览,无论我们离开此页面还是推出Xcode,数据都会被保存在本地中,在下一次打开时就会看得到上一次创建的数据。

image.png


相关文章
|
7月前
|
存储 JSON 缓存
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(1)
实战教程·元宇宙来了,准备好你的电子名片了吗?
54 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(1)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
22 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(3)
|
7月前
|
JSON API 数据格式
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(五)
49 0
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(5)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
34 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(5)
|
7月前
|
数据库
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
33 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(4)
|
7月前
|
存储 前端开发 数据库
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(6)
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)
40 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(八)(6)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
37 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(2)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(2)
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)
41 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(六)(2)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(4)
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)
42 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(七)(4)
|
7月前
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)(3)
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)
39 0
实战教程·元宇宙来了,准备好你的电子名片了吗?(四)(3)