iOS數據持久化——屬性列表

###一、屬性列表(plist) iOS提供了一種plist格式的文件(屬性列表)用於存儲輕量級的數據,而且只能保存NSDictionary、NSArray、NSString、NSNumber、Boolean、NSData、NSDate 類型的數據。將這些類型的數據保存爲plist格式文件,該格式保存的數據能夠直接使用NSDictionary和NSArray讀取。數組

  • ####1.1 手動添加plist文件atom

    • #####建立文件: 新建文件-->Resource-->Property List 輸入圖片說明code

    • #####添加數據: plist文件的根類型只能是NSArray或NSDictionary 輸入圖片說明 輸入圖片說明對象

    • #####讀取數據: 將plist文件中的數據讀入對應的根類型圖片

    // 一、獲取文件所在的路徑,Resource:文件名稱、Type:文件格式
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"userInfos" ofType:@"plist"];
    
    // 二、從路徑中獲取對應格式的數據
    
    // 若是Root爲NSArray,則使用數組保存
    NSArray *infos = [NSArray arrayWithContentsOfFile:filePath];
    NSLog(@"%@",infos);
    
    // 若是Root爲NSDictionary,則使用字典保存
    NSDictionary *infoDic = [NSDictionary dictionaryWithContentsOfFile:filePath];
    NSLog(@"%@",infoDic);
  • ####1.2 使用NSUserDefaults保存爲pist文件 iOS中除了手動添加plist文件外,還提供了 NSUserDefaults 類來將數據保存爲plist文件。NSUserDefaults 將自動生成plist文件,該文件保存在沙盒目錄中的Library/Preferences目錄中。rem

    • #####建立NSUserDefaults對象 NSUserDefaults是一個單例對象,項目中每次使用都是同一個。也就是說使用NSUserDefaults 保存的數據都是在同一個plist文件中,全部使用時要注意。
    NSUserDefaults *deaults = [NSUserDefaults standardUserDefaults];
    • #####設置保存數據 NSUserDefaults 生成的plist的Root是字典類型,全部數據都是以鍵值對的方式設置的,保存的數據類型也只能是plist文件支持的數據類型,因此不能保存自定義的數據類型。
    // 保存對象類型數據
    [deaults setObject:@"保存的字符串" forKey:@"string"];
    [deaults setObject:@100 forKey:@"number"];
    NSArray *array = @[@1,@2,@3,@4];
    [deaults setObject:array forKey:@"array"];
    NSDictionary *dic = @{@"key1":@"value1",@"key2":@"value2"};
    [deaults setObject:dic forKey:@"dic"];
    
    // 保存基本類型數據,最終在plist中保存的是NSNumber類型。
    [deaults setBool:YES forKey:@"bool"];
    [deaults setInteger:100 forKey:@"integer"];
    [deaults setDouble:3.33333 forKey:@"double"];
    [deaults setFloat:3.15 forKey:@"float"];
    • #####讀取保存的數據 由於 NSUserDefaults 保存的Root爲字典,全部取值時根據對應的鍵去取值。無論以前保存的類型是可變或者是不可變,讀取出來的數據類型都是不可變的了。
    NSString *str = [deaults objectForKey:@"string"];
    NSArray *arr = [deaults objectForKey:@"array"];
    • #####移除保存的數據
    [deaults removeObjectForKey:@"string"];
    [deaults removeObjectForKey:@"array"];
    • #####同步數據 每次使用 NSUserDefaults 添加、修改或者刪除數據後都須要對數據同步,防止數據沒有及時更新,操做以下:
    [deaults synchronize];
  • ####1.3 直接將數據寫入plist文件 經常使用的Foundation類(NSString、NSArray、NSDictionary等)都有一個writeToFile:atomically: 方法,用於將數據持久保存到指定的文件中。字符串

    // 一、建立文件保存的文件路徑
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"test.plist"];
    
    // 2.設置數據
    NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
    [userInfo setObject:@"張三" forKey:@"userName"];
    [userInfo setObject:@"123456789" forKey:@"userPass"];
    [userInfo setObject:@"13577893212" forKey:@"tel"];
    
    // NSArray *infos = @[@100,@200,@300,@400];
    
    // 3.將數據寫入文件
    [userInfo writeToFile:filePath atomically:YES];
    
    //[infos writeToFile:filePath atomically:YES];
相關文章
相關標籤/搜索