数据存储之属性列表Plist
常用的数据存储有属性列表、偏好设置、归档、sqlite、coreData。上一博客了解了沙盒,现在了解下属性列表Plist。

通常通过NSArray、NSDictionary集合类的WriteToFile:atomically方法将他们存储到属性列表中。在属性列表能保存的数据类型如下

所以可以序列化的类有以下这些:
NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、NSData、NSMutableData、NSDate、NSString、NSMutableString、NSNumber
对Boolean类型的数据进行读写时,需先转为NSNumber类型,然后通过NSNumber的boolValue方法读取。
//
// ViewController.m
// Plist
//
// Created by City--Online on 15/4/21.
// Copyright (c) 2015年 CYW. All rights reserved.
//
#import "ViewController.h"
#import "Student.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *array= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *path=[array objectAtIndex:0];
#if 0 //数组
NSString *filePath=[path stringByAppendingPathComponent:@"students.plist"];
NSLog(@"%@",filePath);
#if 0//数组写数据
NSArray *array1=[[NSArray alloc]initWithObjects:@"a",[NSDate date],@20.9,[NSNumber numberWithBool:YES],nil]
//YES 通过atomically参数让该方法将数据写入辅助文件,而不是写入指定位置。成功写入该文件后,该辅助文件将被复制到第一个参数指定的位置.这是更安全的写入方法,因为如果应用程序在保存期间崩溃,则现有文件不会被破坏。虽增加开销,但在大多数情况还是值得的。
[array1 writeToFile:filePath atomically:YES];
#elif 1 //数组读数据
// NSArray *array1=[[NSArray alloc]initWithContentsOfFile:filePath];
NSArray *array1=[NSArray arrayWithContentsOfFile:filePath];
for (NSString *s in array1) {
NSLog(@"%@",s);
}
#endif
#elif 1 //字典
NSString *filePath=[path stringByAppendingPathComponent:@"studentsdic.plist"];
NSLog(@"%@",filePath);
#if 0//字典写入
NSDictionary *dic=[[NSDictionary alloc]initWithObjects:@[@"a",@"b",@"c"] forKeys:@[@"1",@"2",@"3"]];
[dic writeToFile:filePath atomically:NO];
#elif 1
//字典读数据
// NSDictionary *dic=[NSDictionary dictionaryWithContentsOfFile:filePath];
NSDictionary *dic=[[NSDictionary alloc]initWithContentsOfFile:filePath];
for (NSString * s in dic.allKeys) {
NSLog(@"%@",[dic objectForKey:s]);
}
#endif
#endif
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
// //获取沙盒根目录
// NSString *home=NSHomeDirectory();
// NSLog(@"沙盒根目录:%@\n\n",home);
//
// //获取Documents目录 不建议采用
// NSString *documents=[home stringByAppendingPathComponent:@"Documents"];
// NSLog(@"字符串拼接获取Documents:%@\n\n",documents);
//
// //NSUserDomainMask 代表从用户文件夹下找
// //YES 代表展开路径中的波浪字符“~” NO ~/Documents
// NSArray *array=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, NO);
// // 在iOS中,只有一个目录跟传入的参数匹配,所以这个集合里面只有一个元素
// NSString *documents1=[array objectAtIndex:0];
// NSLog(@"通过方法NSSearchPathForDirectoriesInDomains获取Documents:%@\n\n",documents1);
//
// //获取tmp文件目录
// NSLog(@"tmp 文件目录:%@\n\n",NSTemporaryDirectory());
//
// //获取Library/Caches:
// NSArray *arrayCaches=NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
// NSLog(@"Library/Caches:%@",arrayCaches[0]);
//
// //Library/Preference:通过NSUserDefaults类存取该目录下的设置信息


数据存储之属性列表Plist的更多相关文章
- iOS数据存储之属性列表理解
iOS数据存储之属性列表理解 数据存储简介 数据存储,即数据持久化,是指以何种方式保存应用程序的数据. 我的理解是,开发了一款应用之后,应用在内存中运行时会产生很多数据,这些数据在程序运行时和程序一起 ...
- iOS 应用数据存储方式(XML属性列表-plist)
iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) ...
- iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist)
iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存 ...
- iOS数据持久化存储之属性列表
属性列表(plist) iOS提供了一种plist格式的文件(属性列表)用于存储轻量级的数据,属性列表是一种XML格式的文件,拓展名为plist.如果对象是NSString.NSDictionary. ...
- iphone开发中数据持久化之——属性列表序列化(一)
数据持久化是应用程序开发过程中的一个基本问题,对应用程序中的数据进行持久化存储,有多重不同的形式.本系列文章将介绍在iphone开发过程中数据持久化的三种主要形式,分别是属性列表序列号.对象归档化以及 ...
- ios应用数据存储方式(XML属性列表-plist) - 转
一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直 ...
- HTML5 Canvas 数据持久化存储之属性列表
属性列表想必大家都不会陌生,正常用 HTML5 来做的属性列表大概就是用下拉菜单之类的,而且很多情况下,下拉列表还不够好看,怎么办?我试着用 HT for Web 来实现属性栏点击按钮弹出多功能选框, ...
- [Objective-C] 012_数据持久化_XML属性列表,NSUserDefaults
在日常开发中经常要对NSString.NSDictionary.NSArray.NSData.NSNumber这些基本类的数据进行持久化,我们可以用XML属性列表持久化到.plist 文件中,也可以用 ...
- iOS - OC PList 数据存储
前言 直接将数据写在代码里面,不是一种合理的做法.如果数据经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低.因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据.如 ...
随机推荐
- day01_雷神_Python入门
day01 1.编程语言 主流的像C.java.python.php.C#.等,可以从不同维度分类如下: 机器码和字节码 机器码: C 字节码: 其他 note: 机器码是电脑的CPU可直接解读的数据 ...
- NLTK之WordNet 接口【转】
转自:http://www.cnblogs.com/kaituorensheng/p/3149095.html WordNet是面向语义的英语词典,类似于传统字典.它是NLTK语料库的一部分,可以 ...
- poj 1129 搜索
Channel Allocation Time Limit: 1000 MS Memory Limit: 10000 KB 64-bit integer IO format: %I64d , %I64 ...
- Android-ANR异常
A N R : Application Not Responding : 应用没有响应异常 引发ANR的原因是,组件的主线程去执行了耗时操作多少秒,就会引发ARN异常: 引发ANR异常的案例: pac ...
- VS2015+MySql+EF6采坑经验总结
背景:VS2015+MySql+EF6(DB First) 采坑顺序:按照以前的记忆,操作依次如下: 1,安装 MySQL Connector/NET(不用想,装最新的,8.0.12) 2.安装 My ...
- python--partial偏函数
new_func = partial(函数名,参数), 生成一个新的函数, 新的函数中参数是partial固定时的参数 例1: from functools import partial def f ...
- Android常用布局属性解析 -- Layout_weight
Layout_weight是Android开发中一个比较常用的布局属性,在面试中也经常被问到.下面通过实例彻底搞懂Layout_weight的用法. 先看下面的布局代码: <?xml versi ...
- pika配置文件说明
# Pika 端口 port : 9221 # pika进程数量,不建议超过核心数量,pika是多线程的 thread-num : 1 # Sync 线程数量 sync-thread-num : 6 ...
- a 便签实现 下载
如果想通过纯前端技术实现文件下载,直接把a标签的href属性设置为文件路径即可,如下: <a href="https://cdn.shopify.com/s/files/1/1545/ ...
- MySQL 逻辑物理备份测试
目录 逻辑备份 mysqldump 普通备份 mysqlpump 并行备份 mysqlpump 压缩并行备份 mydumper 并行备份 mydumper 并行压缩备份 小结 物理备份 xtrabac ...