设为首页 加入收藏

TOP

ios应用数据存储方式(XML属性列表-plist) - 转(一)
2019-08-26 06:55:29 】 浏览:58
Tags:ios 应用 数据 存储 方式 XML 属性 -plist

 

一.ios应用常用的数据存储方式 
  1.plist(XML属性列表归档) 
  2.偏好设置 
  3.NSKeydeArchiver归档(存储自定义对象) 
  4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数据库的语句,将对象拆分存储) 
  5.Core Data(对象型的数据库,把内部环节屏蔽)

应用沙盒 
每个ios应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其它文件系统隔离。应用必须待在自己到沙盒里,其他应用不能访问该沙盒(提示:在ios8中已经开发访问)。 
应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer) 

模拟器应用用沙盒的根路径在: (apple是用用户名,模拟器版本9.4.1)

/Users/apple/Library/Developer/CoreSimulator/Devices/CCBBF90E-03CE-4B92-827F-345635A6CD7E/data/Containers/Data/Application/30EF0702-4062-40F9-B82C-974679878206

 

应用沙盒结构分析  应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件。 
1) Documents:保存应用运行时生成的需要持久性的数据,iTunes同步设备时会备份该目录。例如,游戏应用可将游戏存档保存在该目录。 
2) tmp:保存应用运行时所需的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行时,系统也可能会清除该目录下的文件。iTunes同步设备时不会备份该目录 
3) Library 目录:这个目录下有两个子目录:Caches 和 Preferences
  Library/Caches:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大,不需要备份的非重要数据。 
  Library/Preference:保存应用的所有偏好设置,iOS的Settings(设置)应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录。

4) AppNameApp 目录:这是应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以您在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。 

 

四.应用沙盒常见的获取方式 
  1.沙盒根目录:NSString *home = NSHomeDirectory();  Documents目录两种方法

NSString *homeDir = NSHomeDirectory();

  2.利用沙盒根目录拼接”Documents”字符串 

NSString *home = NSHomeDirectory(); 
NSString *documents = [home stringByAppendingPathComponent:@”Documents”];//不建议采用,因为新版本的操作系统可能会修改目录名 

  3.利用 NSSearchPathForDirectoriesInDomains 函数 

//NSUserDomainMask代表从用户文件下找 
//YES代表展开路径中的波浪字符”~” 
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);//在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素 
NSString *documents = [array objectAtIndex:0]; 

  4. 获取 tmp 目录 

NSString *tmp = NSTemporaryDirectory(); 

  5.Library/Caches:(跟Documents类似的2种方法) 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDir = [paths objectAtIndex:0];

  6.利用沙盒根目录拼接”Caches”字符串 

  7.利用 NSSearchPathForDirectoriesInDomain 函数(将函数的2个参数改为:NSCachesDirectory即可) 

  8.Library/Preference:通过 NSUserDefaults 类存取该目录下的设置信息 

  9.获取应用程序程序包中资源文件路径的方法: 例如获取程序包中一个图片资源(apple.png)路径的方法:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@”apple” ofType:@”png”];
UIImage *appleImage = [[UIImage alloc] initWithContentsOfFile:imagePath];

  代码中的mainBundle类方法用于返回一个代表应用程序包的对象。


代码:

#define CURRENT_SCREEN_WIDTH     [UIScreen mainScreen].bounds.size.width
#define CURRENT_SCREEN_HEIGHT     ([UIScreen mainScreen].bounds.size.height - 64)
#define BUTTON_WIDTH     80
#define BUTTON_HEIGHT    40

@interface ViewController ()

//保存数据按钮
@property(nonatomic,strong) UIButton *saveButton;
//读取数据按钮
@property(nonatomic,strong) UIButton *readButton;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self initControl];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

//初始化控件
- (void)initControl{
    _saveButton = [[UIButton alloc] initWithFrame:CGRectMake(CURRENT_SCREEN_WIDTH/2 - BUTTON_WIDTH/2,
                                                             CURRENT_SCREEN_HEIGHT/2 - BUTTON_HEIGHT,
                                                             BUTTO
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【读书笔记】iOS-更改编辑器键的.. 下一篇【读书笔记】iOS-使用GCD改善性能

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目