zoukankan      html  css  js  c++  java
  • Titanium.App.Properties 对象

    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) 
     
    当然也可以通过这样的方法,将图像以文件的形式保存。

    作者:清风送明月
    出处:http://www.cnblogs.com/csu8263/
    另一博客:http://blog.chinaunix.net/uid/20510751.html
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    linux下修改MAC地址方法
    自定义VBS脚本(统计在指定文件中搜索字符串出现的次数)
    mysql 1053错误,无法启动的解决方法
    VBS自编写脚本。(实现批量修改文件名且在执行前,备份原有文件夹中的文件)
    在命令提示符下,怎么查看windows开启了哪些服务?
    vbs 读取txt是读取特定的行
    Windows XP SP3中远程桌面实现多用户登陆
    Linux关机命令详解
    VBS 读取文本文件特殊字符前如逗号的值并赋值给变量
    VBS基础篇
  • 原文地址:https://www.cnblogs.com/csu8263/p/3826551.html
Copyright © 2011-2022 走看看