UserDefault

概述

iOS 沙盒机制

每个 iOS 程序都有一个独立的文件系统(存储空间),而且只能在对应的文件系统中进行操作,此区域被称为沙盒。应用必须待在自己的沙盒里,其他应用不能访问该沙盒(通过shareAction原生插件分享除外)。当然该应用也不能访问其它应用的沙盒(某些系统资源除外,如系统相册等,编译之前需申请访问权限)。

沙盒中的目录

  • Documents (fs://协议对应的路径的根目录)保存应用程序的重要数据文件和用户数据文件等。用户数据基本上都放在这个位置(例如从网上下载的图片或音乐文件),该文件夹在应用程序更新时会自动备份,在连接iTunes时也可以自动同步备份其中的数据。

  • Library/Caches:(cache://协议对应的路径的根目录)保存应用程序使用时产生的支持文件和缓存文件(保存应用程序再次启动过程中需要的信息),还有日志文件最好也放在这个目录。iTunes 同步时不会备份该目录并且可能被其他工具清理掉其中的数据。

iOS 中的 NSUserDefault

它就是持久化数据的一种方式,主打轻量级的用户配置信息。它是单例的,并且是线程安全的,是以键值对的形式保存在沙盒中,最下面还是用plist文件进行保存。 本原生插件即封装了原生的 NSUserDefault 的相关接口。

setValueForKey

设置数据

setValueForKey({params},callback(ret))

params

key:

  • 类型:字符串
  • 描述:设置数据的 Key

value:

  • 类型:字符串、数字、布尔登基本数据类型
  • 描述:设置的数据,注意要传基本数据类型,如果是数组这样的,其包含的元素也都必须是基本数据类型

示例代码

var UserDefault = api.require('UserDefault');
UserDefault.setValueForKey({
   key:'userInfo',
   value:{
      username:'girl',
      password:'123',
      sexy: true
   }
});

可用性

iOS 系统,android 系统

可提供的 1.0.0 及更高版本

getValueForKey

根据 key 获取数据

getValueForKey({params},callback(ret))

params

key:

  • 类型:字符串
  • 描述:获取数据的 Key

callback(ret)

ret:

  • 类型:JSON 对象
  • 描述:返回对应的 value

## 示例代码

```js
var UserDefault = api.require('UserDefault');
UserDefault.getValueForKey({
  key:'userInfo'
},function(ret) {
   api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS 系统,android 系统

可提供的 1.0.0 及更高版本

removeValueForKey

根据 key 移除数据

removeValueForKey({params},callback(ret))

params

key:

  • 类型:字符串
  • 描述:要获取的数据的 Key

示例代码

var UserDefault = api.require('UserDefault');
UserDefault.removeValueForKey({
  key:'userInfo'
});

可用性

iOS 系统,android 系统

可提供的 1.0.0 及更高版本

valueRepresentation

获取之前设置的所有数据

valueRepresentation(callback(ret))

callback(ret)

ret:

  • 类型:JSON 对象
  • 描述:返回设置的所有数据
  • 内部字段: 同设置的格式

示例代码

var UserDefault = api.require('UserDefault');
UserDefault.valueRepresentation(function(ret) {
   api.alert({msg:JSON.stringify(ret)});
});

可用性

iOS 系统,android 系统

可提供的 1.0.0 及更高版本

registerDefaults

设置默认数据

比如: //设置默认值 var UserDefault = api.require('UserDefault'); UserDefault.registerDefaults({ appSkin:'white' });

UserDefault.getValueForKey({ key:'appSkin' },function(ret) { api.alert({msg:JSON.stringify(ret)}); //此时ret是 {appSkin:'white'} });

//设置数据 UserDefault.setValueForKey({ key:'appSkin', value:'dark' });

UserDefault.getValueForKey({ key:'appSkin' },function(ret) { api.alert({msg:JSON.stringify(ret)}); //此时ret是 {appSkin:'dark'} });

//移除数据 UserDefault.removeValueForKey({ key:'appSkin' });

UserDefault.getValueForKey({ key:'appSkin' },function(ret) { api.alert({msg:JSON.stringify(ret)}); //此时ret是 {appSkin:'white'} });

registerDefaults({params},callback(ret))

params

defaultJSON:

  • 类型:JSON 对象
  • 描述:设置的默认数据

示例代码

var UserDefault = api.require('UserDefault');
UserDefault.registerDefaults({
  userInfo:{
      username:'girl',
      password:'123',
      sexy: true
   }
});

可用性

iOS 系统,android 系统

可提供的 1.0.0 及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/11/18