iOS开发——数据持久化OC篇&plist文件增删改查操作
Plist文件增删查改
主要操作:
1.//获得plist路径 -(NSString*)getPlistPath;
2.//判断沙盒中名为plistname的文件是否存在 -(BOOL) isPlistFileExists;
3.//读取沙盒中Document文件夹下的BookList.plist文件
[NSMutableDictionarydictionaryWithContentsOfFile:plistPath];
4.//写入文件 if ([plistDictionary writeToFile:plistPath atomically:YES])
#import "WBBooksManager.h"
@implementation WBBooksManager
static WBBooksManager *g_instance = nil;
+ (WBBooksManager *)sharedInstance
{
@synchronized(self) {
if ( g_instance == nil ) {
g_instance = [[self alloc] init];
}
}
return g_instance;
}
//获得plist路径
-(NSString*)getPlistPath{
//沙盒中的文件路径
NSArray *storeFilePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *doucumentsDirectiory = [storeFilePath objectAtIndex:];
NSString *plistPath =[doucumentsDirectiory stringByAppendingPathComponent:@"WBBooks.plist"]; //根据需要更改文件名
return plistPath;
}
//判断沙盒中名为plistname的文件是否存在
-(BOOL) isPlistFileExists{
NSString *plistPath =[[WBBooksManager sharedInstance]getPlistPath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if( [fileManager fileExistsAtPath:plistPath]== NO ) {
NSLog(@"not exists");
return NO;
}else{
return YES;
}
}
-(void)initPlist{
NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
//如果plist文件不存在,将工程中已建起的plist文件写入沙盒中
if (! [[WBBooksManager sharedInstance] isPlistFileExists]) {
//从自己建立的plist文件 复制到沙盒中 ,方法一
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *bundle = [[NSBundle mainBundle] pathForResource:@"WBBooks" ofType:@"plist"];
[fileManager copyItemAtPath:bundle toPath:plistPath error:&error];
//方法二
// NSString *path = [[NSBundle mainBundle] pathForResource:@"WBBooks"ofType:@"plist"];
// NSMutableDictionary *activityDics = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
// [activityDics writeToFile:plistPath atomically:YES];
}
}
//判断key的书是否存在
-(BOOL)isBookExistsForKey:(NSString*)key{
NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
NSMutableDictionary *WBBooksDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
//根目录下存在名为bookname的字典
if ([WBBooksDictionary objectForKey:key]) {
return YES;
}else{
return NO;
}
}
//根据key值删除对应书籍
-(void)removeBookWithKey:(NSString *)key{
NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
NSMutableDictionary *WBBooksDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
[WBBooksDictionary removeObjectForKey:key];
[WBBooksDictionary writeToFile:plistPath atomically:YES]; //删除后重新写入
}
//删除plistPath路径对应的文件
-(void)deletePlist{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
[fileManager removeItemAtPath:plistPath error:nil];
}
//将dictionary写入plist文件,前提:dictionary已经准备好
-(void)writePlist:(NSMutableDictionary*)dictionary forKey:(NSString *)key{
NSMutableDictionary *plistDictionary = [[NSMutableDictionary alloc]init];
//如果已存在则读取现有数据
if ([[WBBooksManager sharedInstance]isPlistFileExists]) {
plistDictionary = [[WBBooksManager sharedInstance]readPlist];
}
//增加一个数据
[plistDictionary setValue:dictionary forKey:key]; //在plistDictionary增加一个key为...的value
NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
if([plistDictionary writeToFile:plistPath atomically:YES]){
NSLog(@"write ok!");
}else{
NSLog(@"ddd");
}
}
//
-(NSMutableDictionary*)readPlist{
NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
NSMutableDictionary *resultDictionary = [[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];
return resultDictionary;
}
//读取plist文件内容复制给dictionary 备用
-(void)readPlist:(NSMutableDictionary **)dictionary{
NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
*dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
}
//更改一条数据,就是把dictionary内key重写
-(void)replaceDictionary:(NSMutableDictionary *)newDictionary withDictionaryKey:(NSString *)key{
[[WBBooksManager sharedInstance]removeBookWithKey:key];
[[WBBooksManager sharedInstance]writePlist:newDictionary forKey:key];
}
-(NSInteger)getBooksCount{
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
dictionary = [[WBBooksManager sharedInstance] readPlist];
return [dictionary count];
}
//导入头文件
#import "WBBooksManager.h"
-(void)viewDidLoad中添加以下代码,是刚写的时候测试时用的,狠时繁杂。 将就着看好了、
WBBooksManager *sss = [[WBBooksManager alloc] init ];
NSString *plistPath =[[WBBooksManager sharedInstance] getPlistPath];
if( [sss isPlistFileExists]== NO ) {//不存在
NSLog(@"WBBooks.plist not exists ,build it.");
NSMutableDictionary *addDictionary1 = [[NSMutableDictionary alloc] init];
NSString *addName1 = [NSString stringWithFormat:@"www"];
NSNumber *addNumber1 = [[NSNumber alloc] initWithInt:];
[addDictionary1 setValue:addName1 forKey:@"name"];
[addDictionary1 setValue:addNumber1 forKey:@"list"];
[[WBBooksManager sharedInstance]writePlist:addDictionary1 forKey:@"Add1"];
NSMutableDictionary *addDictionary2 = [[NSMutableDictionary alloc] init];
NSString *addName2 = [NSString stringWithFormat:@"aaas"];
NSNumber *addNumber2 = [[NSNumber alloc] initWithInt:];
[addDictionary2 setValue:addName2 forKey:@"name"];
[addDictionary2 setValue:addNumber2 forKey:@"list"];
[[WBBooksManager sharedInstance]writePlist:addDictionary2 forKey:@"Add2"];
}
NSMutableDictionary *resultDictionary = [[NSMutableDictionary alloc] init];
[[WBBooksManager sharedInstance] readPlist:&resultDictionary];
NSLog(@"add1的结果%@", resultDictionary);
NSArray *array = [resultDictionary allKeys]; //所有的Book
int num = [[WBBooksManager sharedInstance] getBooksCount]; //总数
NSLog(@"array%@ %d",array,num);
NSMutableDictionary *plistDictionary = [[NSMutableDictionary alloc]init];
plistDictionary = [[WBBooksManager sharedInstance]readPlist];
NSMutableDictionary *addDictionary2 = [[NSMutableDictionary alloc] init];
NSString *addName2 = [NSString stringWithFormat:@"dafd"];
NSNumber *addNumber2 = [[NSNumber alloc] initWithInt:];
[addDictionary2 setValue:addName2 forKey:@"name"];
[addDictionary2 setValue:addNumber2 forKey:@"list"];
[plistDictionary setValue:addDictionary2 forKey:@"Add2"];
[plistDictionary writeToFile:plistPath atomically:YES];
resultDictionary = [[NSMutableDictionary alloc] init];
[[WBBooksManager sharedInstance] readPlist:&resultDictionary];
NSLog(@"add1的结果%@", resultDictionary);
array = [resultDictionary allKeys]; //所有的Book
num = [[WBBooksManager sharedInstance] getBooksCount]; //总数
NSLog(@"array%@ %d",array,num);
NSMutableDictionary *addDictionary1 = [[NSMutableDictionary alloc] init];
NSString *addName1 = [NSString stringWithFormat:@"wmmm"];
NSNumber *addNumber1 = [[NSNumber alloc] initWithInt:];
[addDictionary1 setValue:addName1 forKey:@"name"];
[addDictionary1 setValue:addNumber1 forKey:@"list"];
//判断给出的Key对应的数据是否存在
if ([[WBBooksManager sharedInstance] isBookExistsForKey:@"Add1"]) {
//存在,则替换之
NSLog(@"存在,则替换之");
[[WBBooksManager sharedInstance] replaceDictionary:addDictionary1 withDictionaryKey:@"Add1"];
}else{//不存在,则写入
NSLog(@"不存在,则写入");
[[WBBooksManager sharedInstance] writePlist:addDictionary1 forKey:@"Add1"];
}
resultDictionary = [[NSMutableDictionary alloc] init];
[[WBBooksManager sharedInstance] readPlist:&resultDictionary];
NSLog(@"add1的结果%@", resultDictionary);
array = [resultDictionary allKeys]; //所有的Book
num = [[WBBooksManager sharedInstance] getBooksCount]; //总数
NSLog(@"array%@ %d",array,num);
addName1 = [NSString stringWithFormat:@"wmmm"];
addNumber1 = [[NSNumber alloc] initWithInt:];
[addDictionary1 setValue:addName1 forKey:@"name"];
[addDictionary1 setValue:addNumber1 forKey:@"list"];
//更改key对应的数据
if ([[WBBooksManager sharedInstance] isBookExistsForKey:@"Add1"]) {
[[WBBooksManager sharedInstance] replaceDictionary:addDictionary1 withDictionaryKey:@"Add1"];
}
resultDictionary = [[WBBooksManager sharedInstance]readPlist];
NSLog(@"add1111的结果%@", resultDictionary);
//删除给出key对应的数据
if ([[WBBooksManager sharedInstance] isBookExistsForKey:@"Add1"]) {
[[WBBooksManager sharedInstance] removeBookWithKey:@"Add1"];
}
resultDictionary = [[WBBooksManager sharedInstance]readPlist];
NSLog(@"add1111的结果%@", resultDictionary);
//删除整个plist文件
// if ([[WBBooksManager sharedInstance]isPlistFileExists]) {
// [[WBBooksManager sharedInstance] deletePlist];
// }
resultDictionary = [[WBBooksManager sharedInstance]readPlist];
NSLog(@"add1111的结果%@", resultDictionary);
iOS开发——数据持久化OC篇&plist文件增删改查操作的更多相关文章
- iOS开发——数据持久化Swift篇&通用文件存储
通用文件存储 import UIKit class ViewController: UIViewController { @IBOutlet weak var textField: UITextFie ...
- IOS开发中使用CNContact\CNMutableContact 对通讯录增删改查
IOS开发中使用CNContact\CNMutableContact 对通讯录增删改查 首先当然是把CNcontact包含在工程中: @import Contacts; 1.下面是增加联系人的程序段: ...
- iOS开发-plist文件增删改查
plist第一次看到这个后缀名文件的时候感觉怪怪的,不过接触久了也就习以为常了,plist是Property List的简称可以理解成属性列表文件,主要用来存储串行化后的对象的文件.扩展名为.plis ...
- iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储
使用Core Data进行数据持久化存储 一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成 ...
- iOS开发——数据持久化Swift篇&SettingBundle
SettingBundle import UIKit class ViewController: UIViewController { var userDefault = NSUserDefaults ...
- iOS开发数据持久化技术02——plist介绍
有疑问的请加qq交流群:390438081 我的QQ:604886384(注明来意) 微信:niuting823 1. 简单介绍:属性列表是一种xml格式的文件.扩展名.plist: 2. 特性:pl ...
- iOS开发——数据持久化Swift篇&(二)沙盒文件
沙盒文件 //******************** 5.2 文件操作 func use_FileOperations() { //1.获取程序的Home目录 let homeDirectory = ...
- iOS开发——数据持久化Swift篇&文件目录路径获取(Home目录,文档目录,缓存目录等)
文件目录路径获取(Home目录,文档目录,缓存目录等) iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒.下面介绍常用的程序文件夹目录: 1,Home ...
- iOS开发——数据持久化Swift篇&iCloud云存储
iCloud云存储 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super. ...
随机推荐
- Android 设置 横屏 竖屏 (转)
http://2960629.blog.51cto.com/2950629/701227 方法一:在AndroidManifest.xml中配置 如果不想让软件在横竖屏之间切换,最简单的办法就是在项目 ...
- c#装B指南
要想让自己的代码,看起来更优雅,更有逼格,更高大上,就一定要写出晦涩难懂,而又简洁的代码来. 对于类自身的全局变量,一定要加this,对于基类的,一定要加base.反射不要多,但一定要有,而且偶尔就来 ...
- javascript里面dom操作和兼容问题汇总
DOM 增,删,改,查 oUl.children 获取UL的子节点 有length的属性 oUl.children[0] 获取UL第1个子节点 使 ...
- 深入浅出谈存储:如何区别NAS、SAN与DAS
深入浅出谈存储:如何区别NAS.SAN与DAS 2012年02月17日16:51 来源:新浪博客 作者:林沛满 编辑:曾智强 查看全文 赞(0)评论(1) 分享 标签: DAS , SAN , 存储系 ...
- oracle 去掉空格
trim(value) 去掉左右空格 ltrim(value) 去掉左空格 rtrim(value) 去掉右空格
- 理解js闭包(一)
@(编程) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. ...
- python知识点 2014-07-09
迭代协议: 类实现方法__next__,则可以使用for.while来实现迭代 使用iter或者next实现手工迭代: L = [1,2,3] I = iter(L) print(I.next()) ...
- Struts2数据校验方法
方法: 1.在Action类中execute()方法中进行校验. 优点:Action类无需继承框架中的类. 缺点:(1)当有多个校验时,代码重复,违反高内聚,低耦合. 2.重写框架ActionSupp ...
- Android打开WIFI或者移动网络的代码实现
MainActivity如下: package wy.testnetwork; import java.lang.reflect.Field; import java.lang.reflect.Inv ...
- CCF 201403-3 命令行选项 (STL模拟)
问题描述 请你写一个命令行分析程序,用以分析给定的命 令行里包含哪些选项.每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔.这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序 ...