當前位置:首頁 » 存儲配置 » nsdata存儲

nsdata存儲

發布時間: 2023-06-04 01:14:02

① IOS 存儲方式(PList、NSUserDefaults、歸檔、CoreData、資料庫、文件)

iOS開發,plist文件讀寫那些事 - (jianshu.com)

NSUserDefaults存儲輕量級 的本地數據 ,比如要保存一個登陸界面的數據,用戶名、密碼之類的。

支持的數據類型有 NSString、 NSNumber、NSInteger、NSFloat、BOOL、NSArray、NSDictionary、NSDate、 等系統定義的數據類型。

用NSUserDefaults存儲的數據下次程序運行的時候依然存在 .它的數據存儲在應用程序內置的一個plist文件里, 在/Library/Prefereces沙盒路徑下.

NSUserDefaults是定時把緩存中的數據寫入磁碟的,而不是即時寫入,為了防止在寫完NSUserDefaults後程序退出導致的數據丟失,可以在寫入數據後使用synchronize強制立即將數據寫入磁碟:

使用NSKeyedArchiver 對數據進行 歸檔 反歸檔(將自定義類型轉換為NSData類型:)

NSuserDefaults 的坑
iOS 最終,我還是決定放棄使用NSUserDefaults了 - (jianshu.io)

歸檔: ,就是將數據寫到一個文件裡面去。一般我們的應用的變數常量之類的數據都是在內存裡面的,只要APP關閉,這些數據都會丟失。但是把數據存儲到文件裡面去,就能將數據保存到本地磁碟裡面(目前iOS基本就是在沙盒裡面操作了),不管是APP關閉還是重啟設備,下次啟動APP的時候都能夠讀出來。

解檔: (別人也叫反歸檔),就是將數據從文件裡面讀取出來。在程序裡面使用。

【iOS】數據持久化:使用NSKeyedArchiver進行數據歸檔 - (jianshu.com)

iOS 開發Core Data使用方法 – 技術狗 (jishudog.com)

IOS 開發文件操作——NSFileManager - 星語海藍 - 博客園 (cnblogs.com)
(15條消息) iOS文件操作_你有故事,我囿酒-CSDN博客

參考:
iOS開發 - 關於 NSUserDefaults 的使用 - (jianshu.com)

② iOS數據存儲(一)介紹

iOS本地化存儲的數據保存在沙盒中。
(1) Documents :iTunes會備份該目錄。一般用來存儲需要持久化的數據。
(2) Library/Caches :緩存,iTunes不會備份該目錄。內存不足時會被清除,應用沒有運行時,可能會被清除。一般存儲體積大、不需要備份的非重要數據。
(3) Library/Preference :iTunes同會備份該目錄,可以用來存儲一些偏好設置。
(4) tmp : iTunes不會備份這個目錄,用來保存臨時數據,應用退出時會清除該目錄下的數據。

獲取沙盒文件:

其中:

  可以把字典或數組直接寫入到文件中。另外, NSString 、 NSData 、 NSNumber 等類型,也可以使用 writeToFile:atomically: 方法直接將對象寫入文件中,只是 Type 為空。

   NSUserDefaults是輕量級存儲,一般使用它來進行一些設置的記錄,比如用戶ID,開關是否打開等設置,通過鍵值對的方式記錄設置,所以這個有時候也被稱為偏好設置。
  NSUserDefaults可以存儲的數據類型包括: NSData 、 NSString 、 NSNumber 、 NSDate 、 NSArray 、 NSDictionary 。如果要存儲其他類型,則需要轉換為前面的類型,才能用NSUserDefaults存儲。

也可以寫成宏定義

③ iOS開發之數據存儲以及刪除

iOS本地數據保存有多種方式,歸納如下:

本章不僅是學習多種數據存儲方式,也可學習到其他知識點,下面就讓我們詳細來看:

具體方培梁核法為:
第一步:獲得文件即將保存的路徑,並生成在該路徑下的文件:

第二步:往文件中寫入/讀取:
方法一:

方法配掘二:

方法三:

2.NSUserDefaults:是一個單例對象,在整個應用程序的生命周期中都只有一個實例。用渣旅來保存應用程序設置和屬性、用戶保存的數據。存儲在沙盒的Library/Preference中,NSUserDefaults可以存儲的數據類型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。寫入和讀取都比較簡單,如下:
寫入:

NSString *str = [userDefault objectForKey:@"gang"];

@interface Person : NSObject <NSCoding>//遵守NSCoding協議
@property (nonatomic,strong) NSString *name;
@property (nonatomic,assign) NSInteger age;
@end

解檔操作:
同樣調用NSCoder子類NSKeyedArchiver的方法unarchiveRootObject:toFile: 即可
[NSKeyedUnarchiver unarchiveObjectWithFile:path];

NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
[archiver encodeObject:person forKey:@"person"];
[archiver encodeObject:bir forKey:@"bir"];
// 存檔完畢(一定要調用這個方法)
[archiver finishEncoding];
[data writeToFile:path atomically:YES];

NSData *undata = [NSData dataWithContentsOfFile:path];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
[unarchiver decodeObjectForKey:@"person"];
[unarchiver decodeObjectForKey:@"bir"];
// 恢復完畢
[unarchiver finishDecoding];

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:626
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:356
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:71
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:296
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:787
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:337
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:202
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:798
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:355
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:582