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. ...
随机推荐
- leetcode:Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters. For example, ...
- 使用ncc分析代码
1 ncc是一个编译器, 用于输出程序的一些调用信息等, 可以查看函数调用关系, 支持函数指针, 查看数据结构和代码. 可以用来分析和理解代码. “" ... with ncc, in le ...
- C++设计模式——单例模式
问题描述 现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能:在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进 ...
- matlab的&和&&操作
A&B(1)首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算.(2)A和B可以为矩阵(e.g. A=[1 0],B=[0 0]).A&&B(1)首先判断A的逻辑值,如果 ...
- c++中获取字符cin,getchar,get,getline的区别
http://www.imeee.cn/News/GouWu/20090801/221298.html cin.get()与getchar()函数有什么区别? 详细点..C++中几个输入函数的用法和区 ...
- 深入剖析AutoreleasePool
[深入剖析AutoreleasePool] Objc的AutoreleasePool是一个首尾相连的内存链接,每块大小为1页(32位机上为4kb). 上面可以看到,parent指向父Pool,chil ...
- UVALive 7077 - Song Jiang's rank list(模拟)
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- Windows 2003 服务器安全设置-批处理 (附参考链接)
长期维护windows服务器终结出来的安全设置批处理与大家分享,复制以下全部内容用记事本另存为bat或者cmd执行 ===================分隔符号=================== ...
- oracle根据正则表达式查找对应的字段
语法如下: SELECT * FROM 表名WHERE regexp_like(表字段,'正则') 例如: 查找某字段小数点后有两个小数以上的信息 SELECT * FROM A TWHERE reg ...
- HDU2819Swap(二分图最大匹配)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2819 题目大意很明确,交换图的某些行或者是某些列(可以都换),使得这个N*N的图对角线上全部都是1. ...