Titanium.App.Properties是用来管理键值对数据的一个很方便的对象。在保存数据的时候,在Ti.App.Properties.setString相对应的Key的值中设置你要保存的值即可。相反,取值的时候,通过Ti.App.Properties.getString方法,取得你想取的Key的值。setString和getString是设置字符串的方法,类似的还有其他数据类型的方法。特别要说的是,要想原封不动的保存JavaScript对象是不可以的,你需要先通过JSON等处理,将对象序列化后再保存。
 
例如1-----------字符串键值对
 
win.addEventListener(
  'close',
  function(){
      var text = textArea.value;
      Ti.App.Properties.setString('previousText', text);
  }
);
 
win.addEventListener(
  'open',
  function(){
      var text = Ti.App.Properties.getString('previousText');
      if ( text ) {
          textArea.value = text;
      }
  }
);
在window关闭的时候,window中的textarea等UI控件输入的内容将会消失,所以我们在window的close事件中追加监听事件,将输入的数据进行保存。这样,即使应用终了后,编辑中的内容还能够在下次再编辑。
 
例如2-----------列表键值对
win.addEventListener(
  'close',
  function(){
      var text = textArea.value;
      Ti.App.Properties.setString('previousText', text);
 
      if (mapview.visible) {
          var loc = mapview.location;
          var locationList =
              [loc.latitude,loc.longitude,loc.latitudeDelta,loc.longitudeDelta];
          Ti.App.Properties.setList('locationList', locationList);
      }
  }
);
 
win.addEventListener(
  'open',
  function(){
      var text = Ti.App.Properties.getString('previousText');
      if ( text ) {
          textArea.value = text;
      }
      if ( Ti.App.Properties.hasProperty('locationList') ) {
          var locationList = Ti.App.Properties.getList('locationList');
          mapview.show();
          mapview.setLocation(
              {
                  latitude : locationList[0],
                  longitude : locationList[1],
                  latitudeDelta : locationList[2],
                  longitudeDelta : locationList[3]
              }
          );
      }
  }
);
在这个例子中,mapview中要设置的4个关于位置的信息值,能够将其变化成数据后保存起来。原封不动保存对象是不可以的,但是如果有很多值的话,你可以其以数组的形式保存。 
当我们要判断某个Key中是否有值的时候,可以使用Ti.App.Properties.hasProperty。
 
 
3----文件操作
在上边的例子中,我们通过使用Ti.App.Properties来保存了数据。在Titanium中也能够很方便的读写文件。以下通过例子来说明如何将数据保存到文件中:
Js代码
var fileName = 'tweet.txt';
win.addEventListener(
  'close',
  function(){
      var text = textArea.value;
      var loc;
      if (mapview.visible) {
          loc = mapview.location;
      }
      var json = JSON.stringify({previousText:text,location:loc});
      var file  = Ti.Filesystem.getFile(
          Titanium.Filesystem.resourcesDirectory + '/' + fileName
      );
      file.write(json);
  }
);
 
win.addEventListener(
  'open',
  function(){
      var file  = Ti.Filesystem.getFile(
          Titanium.Filesystem.resourcesDirectory + '/' + fileName
      );
      var json = file.read();
      if ( !json || json.length <= 0) {
          return;
      }
      var data = JSON.parse(json);
      var text = data.previousText;
      var location = data.location;
      if ( text ) {
          textArea.value = text;
      }
      if ( location ) {
          var locationList = Ti.App.Properties.getList('locationList');
          mapview.show();
          mapview.setLocation(location);
      }
  }
);
在写文件的时候需要注意的一点是:获取文件句柄的方法是Titanium.Filesystem.getFile。
其中的参数就是文件的路径。
Js代码 
1. Titanium.Filesystem.resourcesDirectory + '/' + fileName 
 
这里我们通过resourcesDirectory来指定文件路径,相应的其他的可读写路径,Titanium也提供了很多种,大家可以查查API。
 
在往文件中写入对象的数据的话也一样要通过JSON来序列化。
 
Titanium中已经为我们提供了JSON的序列化(stringify)和反序列化(parse)方法。上边的例子中大家可以看到具体的用法。
 
图像的保存
 
在Tweet的编辑页面中,我们还表示了一个图像,到现在为止,我们都是通过从相册中选择出来的图片,所以图片本身就保存在相册中,但是当我们通过相机拍照的话,就需要将图片保存在相册中。
Js代码 
1. Titanium.Media.saveToPhotoGallery(image) 
 
通过以上代码就能将image图片保存到相册中。
 
Js代码 
1. var file  = Ti.Filesystem.getFile( 
2.    Titanium.Filesystem.resourcesDirectory + '/' + fileName
3. ); 
4. file.write(image) 
 
当然也可以通过这样的方法,将图像以文件的形式保存。

Titanium.App.Properties 对象的更多相关文章

  1. 为什么在使用get时,Properties对象总是忽略默认值?

    不应该对Properties对象调用get方法:而应该调用getProperty方法.许多人认为二者的区别是getProperty声明了返回值为String类型,而get声明的返回值类型为Object ...

  2. Java IO(Properties/对象序列化/打印流/commons-io)

    Java IO(Properties/对象序列化/打印流/commons-io) Properties Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载. ...

  3. spring中配置Properties对象的方法

    工作中有必要将Properties对象进行注解进入:比如 class Person{ @Autowired private Properties properties; } 如果有这种需求的话,那么需 ...

  4. Vue中app实例对象的几种写法

    1.传统方法(练习 小DEMO中用的这种) <script type="text/ecmascript"> var app=new Vue({ el:"#ap ...

  5. DI,依赖注入,给对象赋值 ,get,set,list,set,map,properties对象赋值

  6. java IO之 序列流 集合对象Properties 打印流 流对象

    序列流 也称为合并流. SequenceInputStream 序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从 第一个输入 ...

  7. spring框架是怎么样通过properties来获得对象的?

    首先我们要知道java获得对象的方式有四种: 1.通过new语句实例化一个对象. 2.通过反射机制创建对象. 3.通过clone()方法创建对象 3.通过反序列化的方式创建对象 在spring框架中, ...

  8. ServletContext对象--三大域对象

    Servlet三大域对象的应用 request.session.application(ServletContext) ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器 ...

  9. (七)SpringBoot2.0基础篇- application.properties属性文件的解析及获取

    默认访问的属性文件为application.properties文件,可在启动项目参数中指定spring.config.location的参数: java -jar myproject.jar --s ...

随机推荐

  1. Go语言实战 - revel框架教程之CSRF(跨站请求伪造)保护

    CSRF是什么?请看这篇博文“浅谈CSRF攻击方式”,说的非常清楚. 现在做网站敢不防CSRF的我猜只有两种情况,一是没什么人访问,二是局域网应用.山坡网之前属于第一种情况,哈哈,所以至今没什么问题. ...

  2. MailKit系列之---查询SearchQuery

    对于邮件的唯一Id查询,由于MailKit提供了大量的方法,无法完全讲解完全,所以这里只选择几个来介绍. MailKit通过方法folder.Search来查询邮件的唯一Id,参数是一个SearchQ ...

  3. babel presets stage-x

    在一些新框架的代码中,常基于es6/7标准来书写代码.鉴于这些标准被没有被浏览器广泛支持,我们一般使用babel来将使用e6/7标准书写的代码降级编译(或者说转译)为浏览器可解析的es4/5代码. 以 ...

  4. TSQL 字符串函数:截断和查找

    字符串截断函数是指:Stuff 和 SubString,字符串查找函数是:CharIndex 和 PatIndex 一,SubString 截取子串 最常用的字符串函数,用于截取特定长度的子串. SU ...

  5. 为WLW开发Latex公式插件

    WLW是写博客的利器,支持离线.格式排版等,而且拥有众多的插件.博客园推荐了代码插入插件,但是没有提供WLW的公式编译插件.目前我的一般做法是:先在Word下使用MathType编辑好公式,然后将公式 ...

  6. TortoiseGit:记住用户名和密码

    1.背景: 我们在使用 tortoisegit 工具时会无可避免的经常性 pull 和 push,这时通常要输入用户名和密码,由于麻烦,就有人提出了记住用户名和密码的需求... ... 2.设置: [ ...

  7. 读书笔记--SQL必知必会13--创建高级联结

    13.1 使用表别名 SQL可以对列名.计算字段和表名起别名. 缩短SQL语句 允许在一条SELECT语句中多次使用相同的表. 注意:表别名只在查询执行中使用,不返回到客户端. MariaDB [sq ...

  8. markdown常用语法总结

    转自markdown示例[模板] 1.1.段落标题 根据原文中的文档标题可以对应设置标题. # 一级标题## 二级标题### 三级标题 效果 => 一级标题 二级标题 三级标题 1.2.斜体.加 ...

  9. Java中的泛型 (上) - 基本概念和原理

    本节我们主要来介绍泛型的基本概念和原理 后续章节我们会介绍各种容器类,容器类可以说是日常程序开发中天天用到的,没有容器类,难以想象能开发什么真正有用的程序.而容器类是基于泛型的,不理解泛型,我们就难以 ...

  10. 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)

    前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...