主要操作:
1.//獲得plist路徑 -(NSString*)getPlistPath;
2.//判斷沙盒中名為plistname的文件是否存在 -(BOOL) isPlistFileExists;
3.//讀取沙盒中Document文件夾下的BookList.plist文件
[NSMutableDictionarydictionaryWithContentsOfFile:plistPath];
4.//寫入文件 if ([plistDictionary writeToFile:plistPath atomically:YES])
WBBooksManager.m文件:
#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:0]; 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:13223]; [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:123]; [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:321]; [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:123]; [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:123]; [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);
//附上主要操作
/* 1.NSMutableDictionary/NSDictionary //初始化 NSMutableDictionary *plistDictionary = [NSMutableDictionary dictionaryWithCapacity:0]; //將新的dictionary添加到olddictionary之后,若兩dictionary具有相同的key,則更新 [oldDictionary addEntriesFromDictionary:[NSDictionary dictionaryWithDictionary: newDictionary]]; //給dictionary賦值 [plistDictionary setObject:oldDictionary forKey:key]; //移除某值 [plistDictionary removeObjectForKey:bookID]; //讀取plistPath路徑下的文件 NSMutableDictionary *nsmutableDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath]; 2.NSMutableArray/NSArray //判斷數組中是否包含某值 [bookIDArray containsObject:bookID] //移除某值 [contentArray replaceObjectAtIndex:j withObject:contentDictionary]; //寫入數據 [plistDictionary writeToFile:plistPath atomically:YES]; */