码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——数据持久化OC篇&plist文件增删改查操作

时间:2015-08-01 23:23:40      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

主要操作:

1.//获得plist路径    -(NSString*)getPlistPath;

2.//判断沙盒中名为plistname的文件是否存在    -(BOOL) isPlistFileExists;

3.//读取沙盒中Document文件夹下的BookList.plist文件

    [NSMutableDictionarydictionaryWithContentsOfFile:plistPath];

4.//写入文件     if ([plistDictionary writeToFile:plistPath atomically:YES])

  1 #import "WBBooksManager.h"
  2 
  3 @implementation WBBooksManager
  4 
  5 static WBBooksManager *g_instance = nil;
  6 
  7 + (WBBooksManager *)sharedInstance
  8 {
  9     @synchronized(self) {
 10         if ( g_instance == nil ) {
 11             g_instance = [[self alloc] init];
 12         }
 13     }
 14     return g_instance;
 15 }
 16 
 17 //获得plist路径
 18 -(NSString*)getPlistPath{
 19     //沙盒中的文件路径
 20     NSArray *storeFilePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 21     NSString *doucumentsDirectiory = [storeFilePath objectAtIndex:0];
 22     NSString *plistPath =[doucumentsDirectiory stringByAppendingPathComponent:@"WBBooks.plist"];       //根据需要更改文件名
 23     return plistPath;
 24 }
 25 
 26 //判断沙盒中名为plistname的文件是否存在
 27 -(BOOL) isPlistFileExists{
 28 
 29     NSString *plistPath =[[WBBooksManager sharedInstance]getPlistPath];
 30     NSFileManager *fileManager = [NSFileManager defaultManager];
 31     if( [fileManager fileExistsAtPath:plistPath]== NO ) {
 32         NSLog(@"not exists");
 33         return NO;
 34     }else{
 35         return YES;
 36     }
 37     
 38 }
 39 
 40 -(void)initPlist{
 41     NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
 42     
 43     //如果plist文件不存在,将工程中已建起的plist文件写入沙盒中
 44     if (! [[WBBooksManager sharedInstance] isPlistFileExists]) {
 45         
 46         //从自己建立的plist文件 复制到沙盒中 ,方法一
 47         NSError *error;
 48         NSFileManager *fileManager = [NSFileManager defaultManager];
 49         NSString *bundle = [[NSBundle mainBundle] pathForResource:@"WBBooks" ofType:@"plist"];
 50         [fileManager copyItemAtPath:bundle toPath:plistPath error:&error];
 51         
 52         //方法二
 53         //        NSString *path = [[NSBundle mainBundle] pathForResource:@"WBBooks"ofType:@"plist"];
 54         //        NSMutableDictionary *activityDics = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
 55         //        [activityDics writeToFile:plistPath atomically:YES];
 56     }
 57 }
 58 
 59 
 60 //判断key的书是否存在
 61 -(BOOL)isBookExistsForKey:(NSString*)key{
 62     
 63     NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
 64     NSMutableDictionary *WBBooksDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath]; 
 65     
 66     //根目录下存在名为bookname的字典
 67     if ([WBBooksDictionary objectForKey:key]) {
 68         return YES;
 69     }else{
 70         return NO;
 71     }
 72 }
 73 
 74 
 75 //根据key值删除对应书籍
 76 -(void)removeBookWithKey:(NSString *)key{
 77     
 78     NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
 79     NSMutableDictionary *WBBooksDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
 80     
 81     [WBBooksDictionary removeObjectForKey:key];
 82     [WBBooksDictionary writeToFile:plistPath atomically:YES]; //删除后重新写入
 83     
 84 }
 85 
 86 
 87 
 88 //删除plistPath路径对应的文件
 89 -(void)deletePlist{
 90     
 91     NSFileManager *fileManager = [NSFileManager defaultManager];
 92     NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
 93     [fileManager removeItemAtPath:plistPath error:nil];
 94     
 95 }
 96 
 97 //将dictionary写入plist文件,前提:dictionary已经准备好
 98 -(void)writePlist:(NSMutableDictionary*)dictionary forKey:(NSString *)key{
 99     
100     NSMutableDictionary *plistDictionary = [[NSMutableDictionary alloc]init];    
101     
102     //如果已存在则读取现有数据
103     if ([[WBBooksManager sharedInstance]isPlistFileExists]) {
104         plistDictionary = [[WBBooksManager sharedInstance]readPlist];
105     }
106 
107         
108     
109     //增加一个数据
110     [plistDictionary setValue:dictionary forKey:key]; //在plistDictionary增加一个key为...的value
111     
112     NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
113     
114     if([plistDictionary writeToFile:plistPath atomically:YES]){
115         NSLog(@"write ok!");
116     }else{
117         NSLog(@"ddd");
118     }
119     
120 }
121 
122 //
123 -(NSMutableDictionary*)readPlist{
124     
125     NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
126     NSMutableDictionary *resultDictionary = [[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];
127     return resultDictionary;
128 }
129 
130 //读取plist文件内容复制给dictionary   备用
131 -(void)readPlist:(NSMutableDictionary **)dictionary{
132     NSString *plistPath = [[WBBooksManager sharedInstance] getPlistPath];
133     *dictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
134 }
135 
136 //更改一条数据,就是把dictionary内key重写
137 -(void)replaceDictionary:(NSMutableDictionary *)newDictionary withDictionaryKey:(NSString *)key{
138 
139     [[WBBooksManager sharedInstance]removeBookWithKey:key];
140     [[WBBooksManager sharedInstance]writePlist:newDictionary forKey:key];
141 
142 }
143 
144 
145 -(NSInteger)getBooksCount{
146     
147     NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
148     dictionary = [[WBBooksManager sharedInstance] readPlist];
149     return [dictionary count];
150     
151 }

//导入头文件
#import "WBBooksManager.h"

-(void)viewDidLoad中添加以下代码,是刚写的时候测试时用的,狠时繁杂。 将就着看好了、

 

  1  WBBooksManager *sss = [[WBBooksManager alloc] init ];
  2     
  3     NSString *plistPath =[[WBBooksManager sharedInstance] getPlistPath];
  4 
  5     if( [sss isPlistFileExists]== NO ) {//不存在
  6         
  7         NSLog(@"WBBooks.plist not exists ,build it.");
  8     
  9 
 10         
 11         NSMutableDictionary *addDictionary1 = [[NSMutableDictionary alloc] init];
 12         NSString *addName1 = [NSString stringWithFormat:@"www"];
 13         NSNumber *addNumber1 = [[NSNumber alloc] initWithInt:13223];
 14         [addDictionary1 setValue:addName1 forKey:@"name"];
 15         [addDictionary1 setValue:addNumber1 forKey:@"list"];
 16         [[WBBooksManager sharedInstance]writePlist:addDictionary1 forKey:@"Add1"];
 17 
 18         
 19         NSMutableDictionary *addDictionary2 = [[NSMutableDictionary alloc] init];
 20         NSString *addName2 = [NSString stringWithFormat:@"aaas"];
 21         NSNumber *addNumber2 = [[NSNumber alloc] initWithInt:123];
 22         [addDictionary2 setValue:addName2 forKey:@"name"];
 23         [addDictionary2 setValue:addNumber2 forKey:@"list"];
 24         [[WBBooksManager sharedInstance]writePlist:addDictionary2 forKey:@"Add2"];
 25         
 26     }
 27 
 28     NSMutableDictionary *resultDictionary = [[NSMutableDictionary alloc] init];
 29     [[WBBooksManager sharedInstance] readPlist:&resultDictionary];
 30     NSLog(@"add1的结果%@", resultDictionary);   
 31     
 32     NSArray *array = [resultDictionary allKeys];  //所有的Book
 33     
 34     int num =  [[WBBooksManager sharedInstance] getBooksCount]; //总数
 35     NSLog(@"array%@ %d",array,num);
 36     
 37        
 38     NSMutableDictionary *plistDictionary = [[NSMutableDictionary alloc]init];    
 39     plistDictionary = [[WBBooksManager sharedInstance]readPlist];
 40 
 41     NSMutableDictionary *addDictionary2 = [[NSMutableDictionary alloc] init];
 42     NSString *addName2 = [NSString stringWithFormat:@"dafd"];
 43     NSNumber *addNumber2 = [[NSNumber alloc] initWithInt:321];
 44     [addDictionary2 setValue:addName2 forKey:@"name"];
 45     [addDictionary2 setValue:addNumber2 forKey:@"list"];
 46     
 47     [plistDictionary setValue:addDictionary2 forKey:@"Add2"];
 48     [plistDictionary writeToFile:plistPath atomically:YES];
 49     
 50     
 51     
 52     
 53     resultDictionary = [[NSMutableDictionary alloc] init];
 54     [[WBBooksManager sharedInstance] readPlist:&resultDictionary];
 55     NSLog(@"add1的结果%@", resultDictionary);   
 56     
 57     array = [resultDictionary allKeys];  //所有的Book
 58     
 59     num =  [[WBBooksManager sharedInstance] getBooksCount]; //总数
 60     NSLog(@"array%@ %d",array,num);
 61 
 62     
 63     
 64     
 65     NSMutableDictionary *addDictionary1 = [[NSMutableDictionary alloc] init];
 66     
 67     NSString *addName1 = [NSString stringWithFormat:@"wmmm"];
 68     NSNumber *addNumber1 = [[NSNumber alloc] initWithInt:123];
 69     [addDictionary1 setValue:addName1 forKey:@"name"];
 70     [addDictionary1 setValue:addNumber1 forKey:@"list"];
 71    
 72     //判断给出的Key对应的数据是否存在
 73     if ([[WBBooksManager sharedInstance] isBookExistsForKey:@"Add1"]) {
 74         //存在,则替换之
 75         NSLog(@"存在,则替换之");
 76         [[WBBooksManager sharedInstance] replaceDictionary:addDictionary1 withDictionaryKey:@"Add1"];
 77     }else{//不存在,则写入
 78         NSLog(@"不存在,则写入");
 79         [[WBBooksManager sharedInstance] writePlist:addDictionary1 forKey:@"Add1"];
 80     }
 81 
 82     
 83     resultDictionary = [[NSMutableDictionary alloc] init];
 84     [[WBBooksManager sharedInstance] readPlist:&resultDictionary];
 85     NSLog(@"add1的结果%@", resultDictionary);   
 86     
 87     array = [resultDictionary allKeys];  //所有的Book
 88     
 89     num =  [[WBBooksManager sharedInstance] getBooksCount]; //总数
 90     NSLog(@"array%@ %d",array,num);
 91 
 92     
 93     
 94     addName1 = [NSString stringWithFormat:@"wmmm"];
 95     addNumber1 = [[NSNumber alloc] initWithInt:123];
 96     [addDictionary1 setValue:addName1 forKey:@"name"];
 97     [addDictionary1 setValue:addNumber1 forKey:@"list"];
 98     
 99     //更改key对应的数据
100     if ([[WBBooksManager sharedInstance] isBookExistsForKey:@"Add1"]) {
101         [[WBBooksManager sharedInstance] replaceDictionary:addDictionary1 withDictionaryKey:@"Add1"];
102     }
103     resultDictionary = [[WBBooksManager sharedInstance]readPlist];
104     NSLog(@"add1111的结果%@", resultDictionary); 
105     
106     
107     //删除给出key对应的数据
108     if ([[WBBooksManager sharedInstance] isBookExistsForKey:@"Add1"]) {
109         [[WBBooksManager sharedInstance] removeBookWithKey:@"Add1"];
110     }   
111     resultDictionary = [[WBBooksManager sharedInstance]readPlist];
112     NSLog(@"add1111的结果%@", resultDictionary); 
113     
114     //删除整个plist文件
115 //    if ([[WBBooksManager sharedInstance]isPlistFileExists]) {
116 //    [[WBBooksManager sharedInstance] deletePlist];    
117 //    }
118     
119     resultDictionary = [[WBBooksManager sharedInstance]readPlist];
120     NSLog(@"add1111的结果%@", resultDictionary); 
121  

 

iOS开发——数据持久化OC篇&plist文件增删改查操作

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4694816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!