NSUserDefault的使用

来源:http://www.cnblogs.com/YangFuShun/archive/2016/08/03/5733450.html
-Advertisement-
Play Games

NSUserDefault的使用 NSUserDefaults用來存儲類似用戶的配置等一些比較小的數據。 一、創建NSUserDefaults對象 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; 二、創建NSU ...


NSUserDefault的使用

NSUserDefaults用來存儲類似用戶的配置等一些比較小的數據。

一、創建NSUserDefaults對象

NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];

 

 

二、創建NSUserDefaults對象之後即可往裡面添加數據,它支持的數據類型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系統定義的數據類型,如果要存放自定義的對象(如自定義的類對象),則必須將其轉換成NSData存儲:

NSArray *arr = [[NSArray alloc] initWithObjects:@"arr1", @"arr2", nil]

[userDefault setObject:arr forKey:@"arrItem"];

[userDefault setObject:@"admin" forKey:@"user_name"];

[userDefault setBOOL:@YES forKey:@"auto_login"];

[userDefault setInteger:1 forKey:@"count"];

 

 

三、往NSUserDefaults添加數據後,它們就變成了全局的變數,App中即可讀寫NSUserDefault中的數據:

NSUserDefaults *mySettingDataR = [NSUserDefaults standardUserDefaults];

 

NSLog(@"arrItem=%@", [mySettingDataR objectForKey:@"arrItem"]);

NSLog(@"user_name=%@", [mySettingDataR objectForKey:@"user_name"]);

NSLog(@"count=%d", [mySettingDataR integerForKey:@"count"]);

 

 

四、如果想刪除某個數據項,可以使用removeObjectForKey刪除數據:

[mySettingData removeObjectForKey:@"arrItem"];

 

 

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

[mySettingData synchronize];

 

 

六、若是寫入自定義類,應該在類實現以下兩個方法

- (id) initWithCoder: (NSCoder *)coder  

{  

    if (self = [super init])  

    {  

        // your code

        self._firstName = [coder decodeObjectForKey:@"_firstName"];  

        self._lastName = [coder decodeObjectForKey:@"_lastName"];  

    }  

    return self;  

}  

 

- (voidencodeWithCoder: (NSCoder *)coder  

{  

    // your code

    [coder encodeObject:_firstName forKey:@"_firstName"];  

    [coder encodeObject:_lastName forKey:@"_lastName"];      

}

 

 

七、然後再存取時通過NSData做載體:

BusinessCard *bc = [[BusinessCard alloc] init];  

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];  

// 將對象轉換成NSData

NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:bc];  

[ud setObject:udObject forKey:@"myBusinessCard"];  

 

udObject = nil;  

udObject = [ud objectForKey:@"myBusinessCard"];  

// 講NSData轉換成對象

bc = [NSKeyedUnarchiver unarchiveObjectWithData:udObject] ;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 正則表達式蠻強大的哈,廢話不多說, 直接上整理內容 一:基本匹配符: \d 匹配數字 eg:'5\d0' >'580' \w 匹配字母或數字 eg:'\d\w\w' >'8zh' . 匹配除換行符外的任何一個字元任意字元 eg:'zh.' >'zh&' \s 空白符(tab)或空格 二:匹配字元長度 ...
  • × 目錄 [1]犯錯 [2]IIFE [3]let 前面的話 關於常見的一個迴圈和閉包的錯誤,很多資料對此都有文字解釋,但還是難以理解。本文將以執行環境圖示的方式來對此進行更直觀的解釋,以及對此類需求進行推衍,得到更合適的解決辦法 犯錯 以上代碼的運行結果是2,而不是預想的0。接下來用執行環境圖示的 ...
  • 1.創建phc文件![](http://images2015.cnblogs.com/blog/291840/201608/291840-20160803223710356-1796009336.jpg)2.在Build Setting/Prefix Header中添加 $(SRCROOT)/fi... ...
  • LinearLayout和RelativeLayout之間:共有屬性:java代碼中通過btn1關聯次控制項android:id="@+id/btn1"控制項寬度android:layout_width="80px" //"80dip"或"80dp"()android:layout_width =“wr ...
  • 什麼是高斯模糊? 高斯模糊(英語:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等圖像處理軟體中廣泛使用的處理效果,通常用它來減少圖像雜訊以及降低細節層次。這種模糊技術生成的圖像,其視覺效果就像是經過一個半透明屏幕在觀察圖像,這與鏡頭焦 ...
  • 今天和杭創的聯調碰到一個問題:他的Apple 開發者賬號無法添加Merchant IDs 。國內百度了很久貌似都沒有一個詳細的說明。然後Google。搜索結果如下: http://stackoverflow.com/questions/30119629/applepay-how-to-r Apple ...
  • 支持輝光效果的Label 效果 源碼 https://github.com/YouXianMing/UI-Component-Collection 中的 FBGlowLabel ...
  • 今天項目遇到需求 要求 實現圖片預覽效果 。 類似於扣扣空間那種,本人也到網上找過 代碼量太大了 ,類多到處是註釋看的有點噁心 。然後自己寫了一個圖片預覽的效果,其實很簡單的 。 首先我們來分析一下 實現原理 :點擊 圖片 顯示 新的視窗 滑動顯示下一張 並且頁碼也跟隨的變化, 輕觸退出(本文代碼沒 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...