当前位置: 首页 > news >正文

沈阳双兴建设集团有限公司网站山东房地产新闻

沈阳双兴建设集团有限公司网站,山东房地产新闻,深圳手机网站建设哪家好,旅行用品东莞网站建设文章目录 数据持久化简述基本使用与封装测试用例参考 数据持久化简述 数据持久化就是将内存数据通过文件或者数据库的方式保存到设备中。HarmonyOS提供两两种持久化方案#xff1a; Preferences#xff1a;主要用于保存一些配置信息#xff0c;是通过文本的形式存储的 Preferences主要用于保存一些配置信息是通过文本的形式存储的在使用中会将文本中的数据全量加载到内存中不太适合存储大量数据的场景。数据库分为两种一种是非关系型数据库数据是键值对的形式存储另外一种事关系型数据库数据是行和列的形式存储提供一个系列的增删改查等SQL操作适合数据复杂的场景比如聊天会话记录等等。 基本使用与封装 Preferences提供了获取实例、读、取、删对应操作的方法 getPreferences(context,name)获取Preferences实例name是存储的文件名get(k)通过key获取value值getAll()获取文件所有的值put(k,v)添加值同一个key会将之前的值覆盖掉需要通过flush()刷新到文件中delete(k)通过key删除对应的value值clear()删除所有的存储值。 注意以上方法都是异步的。 通常会在EntryAbility#onCreate()方法中创建实例其中context便是EntryAbility的上下文获取preferences 实例就可以对数据增删改查操作。 // 导入包 import dataPreferences from ohos.data.preferences // 获取实例 let preferences dataPreferences.getPreferences(context, this.preferencesName)下面对preferences 进行封装基本思路 在获取preferences实例后会将其保存单例中这个单例是GlobalContext方便后期可以通过单例直接获取实例由于get()返回值类型是不确定性定义一个联合类型的别名ValueType 来接收。 const TAG PreferencesUtils // 默认文件名可以在构造函数进行修改 const PREFERENCES_NAME yiPreferences const KEY_PREFERENCES preferences type ValueType number | string | boolean | Arraynumber | Arraystring | Arrayboolean;export class PreferencesUtils{// preferences的文件名private preferencesName: string PREFERENCES_NAME// 用于获取preferences实例的key值保存到单例中private keyPreferences: string KEY_PREFERENCESconstructor(name: string PREFERENCES_NAME, keyP: string KEY_PREFERENCES) {this.preferencesName namethis.keyPreferences keyP}createPreferences(context: Context): PromisedataPreferences.Preferences {let preferences dataPreferences.getPreferences(context, this.preferencesName)GlobalContext.getContext().setObject(this.keyPreferences, preferences)return preferences}getPreferences(): PromisedataPreferences.Preferences {return GlobalContext.getContext().getObject(KEY_PREFERENCES) as PromisedataPreferences.Preferences}async get(key: string, def?: ValueType): PromiseValueType {return (await this.getPreferences()).get(key, def)}async getAll(): PromiseObject {let preferences await this.getPreferences()return preferences.getAll()}async put(key: string, value: ValueType): Promisevoid {let promise await this.getPreferences().then(async (p) {await p.put(key, value)p.flush();}).catch((err){Logger.d(TAG, err)})return promise}async delete(key: string): Promisevoid {return (await this.getPreferences()).delete(key)}async clear(): Promisevoid {return (await this.getPreferences()).clear()}}export default new PreferencesUtils()在EntryAbility#onCreate()方法初始化 export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {PreferencesUtils.createPreferences(this.context)} } GlobalContext export default class GlobalContext {private constructor() { }private static instance: GlobalContext;private _objects new Mapstring, Object();public static getContext(): GlobalContext {if (!GlobalContext.instance) {GlobalContext.instance new GlobalContext();}return GlobalContext.instance;}getObject(value: string): Object | undefined {return this._objects.get(value);}setObject(key: string, objectClass: Object): void {this._objects.set(key, objectClass);} }测试用例 通过异步async 和await来直接获取操作结果也可以在then方法回调中获取结果。 Component Entry struct PreferencesPage {State text: string aboutToAppear() {PreferencesUtils.put(username, Harden)PreferencesUtils.put(age, 28)PreferencesUtils.put(isStaff, true)}build() {Column() {Text(this.text).width(100%).height(60)Row() {Button(get).onClick(async () {this.text await PreferencesUtils.get(username) as string})Button(getAll).onClick(async () {this.getAll()})Button(put).onClick(async () {await PreferencesUtils.put(username, Kobe)await PreferencesUtils.put(age, 28)await PreferencesUtils.put(isStaff, false)this.getAll()})Button(delete).onClick(async () {await PreferencesUtils.delete(isStaff)this.getAll()})Button(clear).onClick(async () {await PreferencesUtils.clear()this.getAll()})}.width(100%).justifyContent(FlexAlign.Center)}}async getAll() {let v await PreferencesUtils.getAll() as Objectthis.text JSON.stringify(v)} } 参考 https://developer.huawei.com/consumer/cn/training/course/slightMooc/C101667367018821971?ha_linkereyJ0cyI6MTcwMjM5NzEzNzM3MywiaWQiOiI4MmM3ZTI1MmFmMDJlMDZiODBmOGU1ZDM5ZTI5YmMyOCJ9
http://www.dnsts.com.cn/news/139491.html

相关文章:

  • 专业网站设计公司排名2022最新永久地域网名
  • 上传网站代码网站活动页面
  • 个人网页制作与网站建设淘宝客网站建设难度大吗
  • 樟木头网站建设昆明网站建设工作室
  • 仿制网站侵权行为深圳营销型网站建设电话
  • 中国建设银行东营分行网站php网站开发心得体会
  • 建站之星管理中心英文手机商城网站建设
  • 营销型网站规划哪家代理注册公司好
  • 美食地图网站开发如何创办公司
  • 厦门网站建设制作多少钱企业公众号
  • 宁波房产信息网官方网站上海网站制作策划
  • 举报网站建设运行情况网站生成器怎么做
  • 做企业网站需要买什么资料电商网站开发的底层架构
  • 做网站推广链接该怎么做网站开发语言怎么识别
  • 网站营销策略怎么写网站分享到微信缩略图
  • 行唐网站建设潍坊做网站好看
  • 微信建一个网站wordpress添加小人
  • 如何建立手机论坛广州网站优化哪家快
  • flash xml网站模板建筑公司网站需求
  • 如何加盟网站建设词条有哪些网站可以做
  • 建设银行官方个人网站个人外贸网站制作
  • 织梦做网站教程群晖frp 外网访问wordpress
  • php自适应网站开发网络搜索优化
  • 山东建设执业资格注册中心网站wordpress轮播图源码
  • 学网站制作多少钱网站建设 网站开发
  • 仿站工具箱网页版免费可以看污app秋葵
  • 深圳市点击未来科技网站建设app网站模板下载
  • 网站建设整个流程ui设计一般要学多久
  • 公司网站的开发策略备案网站多少钱
  • 灌南网站建设江山市住房和城乡建设局网站