偏好设置
先了解一下存储空间的问题
RAM:运行内存,相当于电脑的内存
ROM:内部存储空间,相当于电脑的硬盘
SD:外部存储空间,相当于电脑的移动硬盘、当然,现在手机都已经不支持SD卡了。
现在手机自带的空间都属于外部存储,手机基本内部外部共享同一个存储设备。
//内部存储路径
所有安装至手机的应用都会在data/data目录下生成一个包名文件夹,这个文件夹就是内部存储路径
应用只能读写本应用下的文件夹
Android:安装一个软件,系统会为该软件生成一个内部存储空间,也就data/data目录下生成一个包名文件夹,当我们卸载该软件时,该文件夹会被删除。
iOS:沙河机制:出于安全考虑,iPhone对于安装在上面的应用程序有所限制,这个限制就是应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。总体来说沙盒就是一种独立、安全、封闭的空间。iOS 沙盒机制
//Android内部存储空间 偏好设置文件路径
//iOS沙河 偏好设置路径
iOS
//key为字符串,value可保存的类型有:
//NSData
//NSString
//NSNumber
//NSDate
//NSArray
//NSDictionary
//存
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// 保存最新版本信息
[defaults setObject:@"1.0.0" forKey:@"differVersionKey"];
[defaults setInteger:10 forKey:@"indexKey"];
[defaults synchronize]; //立即同步进行保存
//移除某个键key
[defaults removeObjectForKey:@"differVersionKey"];
//取
// 获取上一次版本
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *lastVersion = [defaults objectForKey:@"differVersionKey"];
//其他常见保存不同类型的方法
/*
- setBool:forKey:
- setFloat:forKey:
- setInteger:forKey:
- setDouble:forKey:
- setURL:forKey:
*/
Android
//偏好设置
private void sharePerence(){
//sharepreference 原理就是生成xml文件、以键值对的方式存储
//存 第一个参数为文件名,第二个为私有的,因为在内部存储空间进行存储,外界不能访问
SharedPreferences sp = getSharedPreferences("Database",MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("nameKey","nameValue");
editor.putString("passwordKey","passwordValue");
editor.commit();
// 插入数据:
// 调用Editor.putxxxx方法,两个参数分别为键和值。
// 获取数据:
// 调用Editor.getxxxx方法,两个参数分别为键和不存在指定键时的默认值。
// 删除数据:
// 调用Editor.remove方法,参数为指定的键。
// 清空所有数据:
// 调用Editor.clear方法
// 上述所有方法调用都要执行Editor.commit方法来提交。
//取
SharedPreferences pre = getSharedPreferences("Database",MODE_PRIVATE);
pre.getString("nameKey",""); //第二个参数为 取不到时的默认值
pre.getString("passwordKey","");
}