当前位置:  编程技术>移动开发
本页文章导读:
    ▪技术点之数据储存        技术点之数据存储 很多时候我们需要存储配置文件或者存储和读取一些用户数据,还有一些共享文件数据。和存储一些大型文件。第一File最开始我想的是使用创建一个文件用于存储File即.........
    ▪ Core Data数据持久化的施用        Core Data数据持久化的使用 CoreData 是ios中用来对数据做持久化的一个框架,它对sqlite进行了封装,使我们不需要学习数据库知识,也不要写SQL语句就能将数据保存到数据库。下面来介绍CoreData.........
    ▪ 【互动出版网】十月份新书榜活动       【互动出版网】10月新书榜活动 【互动出版网】10月新书榜活动参加互动出版网写书评,得积分,换赠书活动。现在即可参加活动哦。 活动详细方案以及规则请点击此链接详细了解》》》 ......

[1]技术点之数据储存
    来源: 互联网  发布时间: 2014-02-18
技术点之数据存储
很多时候我们需要存储配置文件或者存储和读取一些用户数据,还有一些共享文件数据。和存储一些大型文件。
第一File
最开始我想的是使用创建一个文件用于存储File即常说的文件(I/O)存储方法,常用语存储大数量的数据,但是缺点是更新数据将是一件困难的事情。
FILENAME="testpath.txt";
    private String read() {  
        try {  
            FileInputStream inputStream = openFileInput(FILENAME);  
            byte[] b = new byte[inputStream.available()];  
            inputStream.read(b);  
            return new String(b);  
        } catch (Exception e) {  
        }  
        return null;  
    } 
    private void write(String content) {  
        try {  
            FileOutputStream fos = openFileOutput(FILENAME, MODE_APPEND);  
            fos.write(content.getBytes());  
            fos.close();  
        } catch (Exception e) {  
        }  
    } 
通过file方式进行文件存储,一般存储大数据量的文件,比方说音频文件,视频文件等。
第二SharedPreferences同时过SharedPreferences方法来进行存储和读取文件,SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
public static void SaveConfig1(Context context, Music music) {
		SharedPreferences share = context.getSharedPreferences("music",
				Context.MODE_WORLD_WRITEABLE);
		Editor editor = share.edit();
		editor.putString("music_path", music.Music_Path);
		editor.putString("music_name", music.Music_Name);
		editor.commit();
	}

	public static Music LoadConfig1(Context context) {
		SharedPreferences share = context.getSharedPreferences("music",
				Context.MODE_WORLD_WRITEABLE);
		Music music = new Music();
		music.Music_Path = share.getString("music_path", "无");
		music.Music_Name = share.getString("music_name", "无");
		return music;
	}

Class Music{
  private String Music_path ="";
  private String Music_name ="";
  public void SetMusic_path(String path){
   this.Music_path = path;   
}
public String GetMusic_path(){
return this.Music_path;
}
public String SetMusic_name(String name){
this.Music_name = name;
}
public String GetMusic_name(){
return Music_name;
}
}

使用方法是在例如在MusicFind类中存储文件内容
Class MusicFind extends Activity{
    SaveConfig1(getContext,music);
    ...
}

在使用这个文件的时候,调用方法从music文件中得到
Class MusicPlay{
Music musics=null;
musics=LoadConfig1(getContext);
...
}
文件music存储的位置是在/date/data/项目名称/music下。一般使用SharedPreferences进行存储配置数据。如用户的一些软件特性设置。
第三Sqlite
下面还有一种方法,使用数据库,在android中使用的数据库一般是Sqlite,下面我讲解一下Sqlite的使用方法,内容参考http://www.cnblogs.com/wisekingokok/archive/2011/09/13/2174484.html
sqlite也是微型的数据存储方式,但数据库的使用比较麻烦一些,需要创建数据库,创建表格等。下面是使用sqlite的步骤第一创建数据库
SQLiteDatabase db = this.openOrCreateDatabase("test_db.db", Context.MODE_PRIVATE, null); SQLiteDatabase db2 = SQLiteDatabase.openOrCreateDatabase("/data/data/com.test/databases/test_db2.db3", null);

第二创建表,插入数据
db.execSQL("create table tab(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL)");

插入数据代码
ContentValues values = new ContentValues();    
for(int i=0;i<10;i++){    
    values.put("name", "test" + i);    
   db.insert("tab", "_id", values);  
  }

通过下面方法查询数据
Cursor c = db.query("tab", null, null, null, null, null, null); 
 c.moveToFirst();
  while(!c.isAfterLast())
{   
   int index = c.getColumnIndex("name");   
   Log.d("SQLite", c.getString(index));    
    c.moveToNext();
  } 
    c = db.rawQuery("select * from tab", null); 
    c.moveToFirst(); while(!c.isAfterLast())
{
     int index = c.getColumnIndex("name");
     Log.d("SQLite", c.getString(index));    
 c.moveToNext();
}

数据库的使用在更新和查询数据上比较方便,如果我们需要一个数据,只需要一个查询语句可以直接查询自己的数据,而不需要像SharedPreferences得到一个完整对象。
这三种存储方式可以结合还用,我们使用SharedPreferences来存储用户配置文件,当用户启动程序时,更新配置。使用File来存储大型数据文件,比分说音频文件,视频文件等。使用Sqlite来存储用户数据,一个对象的属性数值。

    
[2] Core Data数据持久化的施用
    来源: 互联网  发布时间: 2014-02-18
Core Data数据持久化的使用

CoreData 是ios中用来对数据做持久化的一个框架,它对sqlite进行了封装,使我们不需要学习数据库知识,也不要写SQL语句就能将数据保存到数据库。下面来介绍CoreData的如何使用。

 

1. 新建一个项目,勾选使用Core Data, 新建后需要导入:CoreData.framework

 

 

2.新建项目后,AppDelegate类会生成三个属性

 

[cpp] view plaincopy
  • @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;  
  • @property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;  
  • @property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;  
  •  

    这三个对象操作数据会用的到。

    3.新建一个实体对象

     

    4. 创建一个类与实体对象关联


    5. 保存一个实体模型对象

     

    [java] view plaincopy
  • Person *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:self.managedObjectContext];  
  • person.personId = @10002;  
  • person.age = @29;  
  • person.name = [NSString stringWithFormat:@"jack"];  
  •   
  • NSError *error = nil;  
  • BOOL ret = [self.managedObjectContext save:&error];  
  • if (ret) {  
  •     NSLog(@"保存成功!");  
  • } else {  
  •     NSLog(@"error");  
  • }  

  • 6.删除一个实体模型对象

     

     

    [cpp] view plaincopy
  • //删除  
  • - (void)modifyPerson {  
  •     NSEntityDescription *entifyDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];  
  •     NSFetchRequest *fetchReqeust = [[NSFetchRequest alloc] init];  
  •     [fetchReqeust setEntity:entifyDesc];  
  •       
  •     //查询年龄大于30的实体person对象  
  •     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.age=30"];  
  •     [fetchReqeust setPredicate:predicate];  
  •     //查询出来的person对象数组  
  •     NSArray *persons = [self.managedObjectContext executeFetchRequest:fetchReqeust error:nil];  
  •     //遍历删除  
  •     for (Person *p in persons) {  
  •         [self.managedObjectContext deleteObject:p];  
  •     }  
  •       
  • }  

  • 7. 查询

     

     

    [cpp] view plaincopy
  • //根据条件查询数据  
  • - (void)queryPerson {  
  •     NSEntityDescription *entifyDesc = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];  
  •     //查询对象  
  •     NSFetchRequest *fetchReqeust = [[NSFetchRequest alloc] init];  
  •     [fetchReqeust setEntity:entifyDesc];  
  •       
  •     //查询条件  
  •     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self.age>40 && self.personId>10015"];  
  •     [fetchReqeust setPredicate:predicate];  
  •       
  •     //排序,按age降序排列  
  •     NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];  
  •     [fetchReqeust setSortDescriptors:@[sortDesc]];  
  •       
  •     //查询  
  •     NSArray *persons = [self.managedObjectContext executeFetchRequest:fetchReqeust error:nil];  
  •     for (Person *p in persons) {  
  •         NSLog(@"name=%@,age=%@,id=%@",p.name,p.age,p.personId);  
  •     }  
  • }  


  • 参考资料:
    Core Data Reference API listing for the Core Data classes
    http://developer.apple.com/documentation/Cocoa/Reference/CoreData_ObjC/index.html

    NSPredicate Reference API listing for NSPredicate
    http://developer.apple.com/documentation/Cocoa/Reference/Foundation/ObjC_classic/Classes/NSPredicate.html


        
    [3] 【互动出版网】十月份新书榜活动
        来源: 互联网  发布时间: 2014-02-18
    【互动出版网】10月新书榜活动

    【互动出版网】10月新书榜活动

    参加互动出版网写书评,得积分,换赠书活动。

    现在即可参加活动哦。


    活动详细方案以及规则请点击此链接详细了解》》》


        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    操作系统 iis7站长之家
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3