iOS中的數據持久化,歸檔和反歸檔

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    //打印當前應用程序的沙盒路徑

    NSLog(@"%@", NSHomeDirectory());

    

    //沙盒:在一定範圍內可以隨意做任何事

    

    //iOS程序的沙盒指的就是應用程序的文件操作文件夾, 在文件夾內可以讀寫任何內容, 但是完全不能訪問其他應用程序的沙盒文件夾

    

    //Documents:跟用戶相關的一些文件, 用戶設置的對這個app的偏好設置. 用戶的一些文本信息. 最好不要存儲空間佔用比較大的文件比如視頻/音頻等等

    

    //Library:給開發者使用的, 用來存儲一些東西的文件夾

    

    //Caches:緩存文件夾, 用戶看過的一些圖片, 音頻, 視頻, 都可以存儲在這個文件夾中.一般的app, 清除緩存意思就是清除這個文件夾的所有內容

    

    //Preferences: 給開發者存儲一些內容, NSUserDefaults保存的信息都在這個文件夾中

    

    //    [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:<#(NSString *)#>]

    

    //tmp:臨時文件夾, 存儲網絡請求過程中的一些臨時文件. app版本更新的時候, 會直接清空tmp文件夾.


    //簡單對象寫入本地

    

    //NSString, NSNumber, NSDictionary, NSArray, NSData;

    

    //1.拼接一個存儲路徑

    

    //系統提供了一個函數, 可以直接返回某一個沙盒文件夾的路徑

    

    //返回值: 找到的路徑組成的數組, 如果搜索的是系統的沙盒文件夾路徑, 數組中只有一個元素.

    

    //參數1:搜索沙盒中的哪個文件夾

    //參數2:搜索的範圍

    //參數3:返回的是相對路徑還是絕對路徑

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

    

    NSLog(@"%@", arr);

    

    //獲取文件路徑

    

    //取出documents文件夾的路徑

    NSString *docPath = [arr lastObject];

    

    //拼接一個文件的路徑

    

    NSString *txtPath = [docPath stringByAppendingString:@"/123.txt"];

    


    //2.按照路徑寫入

    

    NSString *str = @"aa";

    

    //參數1:要寫入的路徑

    //參數2:是否對寫入的文件進行寫保護

    //參數3:編碼格式

    //參數4:錯誤信息

    NSError *error = nil;

    [str writeToFile:txtPath atomically:YES encoding:NSUTF8StringEncoding error:&error];

    

    //數組寫入本地

    

    NSArray *array = [NSArray arrayWithObjects:@"a", @"b", @"c", nil];

    NSString *arrPath = [docPath stringByAppendingPathComponent:@"suibian.plist "];

    //寫入本地

    [array writeToFile:arrPath atomically:YES];

    

    

    

    

    //創建boss對象

    Boss *boss = [[Boss alloc] init];

    

    boss.name = @"ww";

    boss.number = @"20";

    boss.sex = @"man";

    

    // 將複雜對象寫入本地的工具

    

    //參數1:要寫入本地的對象

    //參數2:要寫入的路徑

    NSString *bossPath = [docPath stringByAppendingPathComponent:@"boss.aa"];

    

    //歸檔類

    BOOL result = [NSKeyedArchiver archiveRootObject:boss toFile:bossPath];

    

    NSLog(@"複雜對象寫入本地:%d", result);

    

    [boss release];

    

    //反歸檔類

    //從本地讀取數據產生一個新的複雜對象

    Boss *bossReturn = [NSKeyedUnarchiver unarchiveObjectWithFile:bossPath];

    NSLog(@"%@", bossReturn.name);


}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章