仓颉应用开发之——持久化存储(23)

一 概述

  • 持久化存储概述
  • 存储限制
  • 相关api
  • 示例

二 持久化存储概述

  • 对象的作用是持久化存储选定的AppStorage属性
  • PersistentStorage将选定的AppStorage属性保留在设备磁盘上
  • PersistentStorage和AppStorage中的属性建立双向同步。

三 存储限制

支持 不支持
Int64, Float64, String, Bool 持久化大型数据集
持久化经常变化的变量
同时执行多次持久化操作

四 相关api

操作 说明
PersistentStorage.persistProp("Age", 24) 初始化
@StorageLink["Age"] var age: Int64 = 0 关联属性
age += 1 双向同步
PersistentStorage.delete("Age") 删除

五 示例

5.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import ohos.base.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*

@Entry
@Component
class MyView {
let p0 = PersistentStorage.persistProp("Name", "Adonis")
let p1 = PersistentStorage.persistProp("Age", 24)
let p2 = PersistentStorage.persistProp("Height", 180.0)
let p3 = PersistentStorage.persistProp("Male", true)
let p4 = PersistentStorage.persistProps([("Name1", "Alex"), ("Name2", "Aphrodite")])

@StorageLink["Name"] var name: String = ""
@StorageLink["Age"] var age: Int64 = 0
@StorageLink["Height"] var height: Float64 = 0.0
@StorageLink["Male"] var male: Bool = true
@StorageLink["Name1"] var name1: String = ""
@StorageLink["Name2"] var name2: String = ""

func build() {
Column(10) {
Text("Name ${name}")
Text("Age ${age}")
Text("Heght ${height}")
Text("Male ${male}")
Text("Name1 ${name1} Name2 ${name2}")

Button("change age").onClick {
e => age += 1
}

Button("clear age").onClick {
e => PersistentStorage.deleteProp("Age")
}
}
}
}

5.2 效果图

六 参考

  • HarmonyOS NEXT Beta1仓颉—PersistentStorage