plist文件是一個輕量級的數據庫,用於存放一些比較小的數據。下面是對plist的基本操作。
新建一個Plist文件
我這裡是新建的一個以整體為Array,item是字典的plist文件。
一般開發中,如果是要操作plist文件的話。都是要把plist文件放到沙盒(Document) 目錄下的
先得到資源目錄:
//得到資源目錄(新建的plist文件)
- (NSString *)getDataSourcePath:(NSString *) sourceName andType:(NSString *) fileType{
NSString *path = [[NSBundle mainBundle] pathForResource:sourceName ofType:fileType];
return path;
}
得到沙盒 (Document)
復制代碼
//得到documents目錄
- (NSString *)getDocumentPath:(NSString *) fileName{
//兩種獲取document路徑的方式
// NSString *documents = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents = [paths objectAtIndex:0];
NSString *path = [documents stringByAppendingPathComponent:fileName];
return path;
}
復制代碼
重點:
//得到沙盒plist文件
NSString *documentPath = [self getDocumentPath:@"szPlistDemo.plist"];
//向該Document目錄添加數據 1 : 直接寫的方式, 2 : 將資源文件 復制到 documents目錄下
第一種方法:
復制代碼
// NSError *error;
// if ([plistPath writeToFile:documentPath atomically:YES encoding:NSUTF8StringEncoding error:&error]) {
// NSLog(@"file write success . ");
// }else{
// NSLog(@"error = %@",error);
// }
復制代碼
第二種:
復制代碼
// 2 :復制到 documents目錄下
NSFileManager *manager = [NSFileManager defaultManager];
NSError *error;
if ([manager fileExistsAtPath:documentPath]) {
NSLog(@"file is exists");
}else{
if ([manager copyItemAtPath:plistPath toPath:documentPath error:&error]) {
NSLog(@"file is not exists, copy success!");
}else{
NSLog(@"error = %@",error);
return;
}
}
復制代碼
//像plist中寫入數據
//得到資源目錄的數據
復制代碼
NSMutableArray *documentData = [[NSMutableArray alloc] initWithContentsOfFile:documentPath];
NSLog(@"documentData = %@",documentData);
NSDictionary *dic = @{@"age":@"25",@"phone_num":@"1328820394"};
[documentData addObject:dic];
//寫入文件
[documentData writeToFile:documentPath atomically:YES];
復制代碼
//刪除plist文件
這裡我用了一個按鈕,點擊按鈕刪除plist文件
復制代碼
NSError *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager removeItemAtPath:documentPath error:&error]) {
NSLog(@"remove success!");
}else{
NSLog(@"error = %@",error);
}