ios數據持久化 - plist文件(屬性列表)

******? 數據持久化常用的五種方式? ******

1.plist文件(屬性列表)

2.preference(偏好設置)

3.NSKeyedArchiver(歸檔)

4.SQLite 3

5.CoreData

*---- 沙盒路徑下的三個文件(Documents/Library/tmp) -----*

/**** "應用程序包": 這里面存放的是應用程序的源文件,包括資源文件和可執行文件 ****/

NSString *path = [[NSBundle mainBundle] bundlePath];

/*** Documents: 最常用的目錄,iTunes同步該應用時會同步此文件夾中的內容,適合存儲重要數據 ***/

NSString *Documentspath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;

/*** Library/Caches: iTunes不會同步此文件夾,適合存儲體積大,不需要備份的非重要數據 ***/

/** Library/Preferences: iTunes同步該應用時會同步此文件夾中的內容,通常保存應用的設置信息 **/

NSString *Cachespath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;

/** tmp: iTunes不會同步此文件夾,系統可能在應用沒運行時就刪除該目錄下的文件,所以此目錄適合保存應用中的一些臨時文件,用完就刪除 **/

NSString *Preferencespath = NSTemporaryDirectory();

1.plist文件(屬性列表)

****** 手動新建一個 Property List 文件 ******

可以手動添加各類數據

NSString *plistPath = [[NSBundle mainBundle]pathForResource:@"Property List" ofType:@"plist"];

NSMutableDictionary *dataDic = [[NSMutableDictionary alloc]initWithContentsOfFile:plistPath];

NSLog(@"%@",dataDic);//直接打印剛剛寫入的數據

****** ?代碼創建plist文件 ******

//獲取路徑對象

NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *path = [pathArray objectAtIndex:0];

//獲取文件的完整路徑

NSString *filePatch = [path stringByAppendingPathComponent:@"column.plist"];

NSLog(@"%@",filePatch);//打印創建好的plist文件路徑

//寫入數據到plist文件

NSMutableDictionary *dic1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"小小虎",@"name",@"5",@"age",@"boy",@"sex",nil];

NSMutableDictionary *dic2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"小小兮",@"name",@"6",@"age",@"girl",@"sex",nil];

//將上面2個小字典保存到大字典里面

NSMutableDictionary *dataDic = [NSMutableDictionary dictionary];

[dataDic setObject:dic1 forKey:@"一年級"];

[dataDic setObject:dic2 forKey:@"二年級"];

//寫入plist里面

[dataDic writeToFile:filePatch atomically:YES];

//讀取plist文件的內容

NSMutableDictionary *dataDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:filePatch];

NSLog(@"---plist一開始保存時候的內容---%@",dataDictionary);

****** ?plist文件的增刪改查 ******

//修改字典里面的內容,先按照結構取到你想修改內容的小字典

NSMutableDictionary *dd = [dataDictionary objectForKey:@"一年級"];

[dd setObject:@"111111" forKey:@"name"];? ? //修改

[dd setObject:@"222222" forKey:@"content"]; //增加

[dd removeObjectForKey:@"age"];? ? ? ? ? ? //刪除

//注意bool值的修改與一般值修改不一樣,是需要nsnumber作為中間轉換

//修改成功以后,將這個小字典重新添加到大字典里面

[dataDictionary setObject:dd forKey:@"一年級"];

[dataDictionary writeToFile:filePatch atomically:YES];

NSLog(@"---plist做過操作之后的字典里面內容---%@",dataDictionary);

****** 清除plist文件 ******

//清除plist文件,可以根據我上面講的方式進去本地查看plist文件是否被清除

NSFileManager *fileMger = [NSFileManager defaultManager];

NSString *xiaoXiPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"column.plist"];

//如果文件路徑存在的話

BOOL bRet = [fileMger fileExistsAtPath:xiaoXiPath];

NSLog(@"清除plist文件=%d",bRet);

if (bRet) {

NSError *err;

BOOL isDelete = [fileMger removeItemAtPath:xiaoXiPath error:&err];

//已清除,打印的文件路徑打不到了 - xiaoXiPath

NSLog(@"清除plist文件的路徑%@=%d",xiaoXiPath,isDelete);

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容