你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS:NSUserDefaults

iOS:NSUserDefaults

編輯:關於IOS
[收起] 文章目錄
  • 什麼是NSUserDefaults?

什麼是NSUserDefaults?

NSUserDefaults類用於保存應用程序設置和屬性以及用戶數據等輕量級數據。例如,你可以存儲用戶在應用程序中使用的圖片或默認顏色方案。這些對象存儲在iOS所謂的“defaults系統”中。iOS的defaults系統在整個app中都是可用的,因此存放到defaults系統中的數據也是整個應用程序生命周期中可用的。也就是說,無論用戶關閉程序還是關機,在用戶再次打開程序或開機後這些數據仍然存在。NSUserDefaults可以存儲的數據類型包括:

    NSDataNSStringNSNumberNSDateNSArrayNSDictionary

    如果你想保存其他類型,如UIImage,你應該進行編碼(即archive),或者將它轉換為NSData、NSNumber或者NSString。注意:密碼最好不要存儲在NSUserDefaults裡,要存儲也必須用AES/DES加密存儲,更安全的方法是 https://github.com/ldandersen/scifihifi-iphone。

    把密碼存儲在NSUserDefault or plist裡的後果: http://www.shushao.com/news/info/item/203510-ios

    用NSUserDefaults存儲的數據下次程序運行的時候依然存在,它把數據存儲在什麼地方了?如何能夠清除?

    其實它存儲在應用程序內置的一個plist文件裡,這個可以根據路徑看到。 比如說這個是你的程序沙盒位置
    /UsersLibrary/Application Support/iPhoneSimulator/4.1/Applicati*****/29788E40-AF47-45A0-8E92-3AC0F501B7F4/,(這個是應用程序對應在mac上的位置)
    這個下面有/Library/Prefereces,裡面有個plist文件,存儲的就是你的userDefaults,需要注意的是如果程序意外退出,NSUserDefaults standardUserDefaults數據不會被系統寫入到該文件,不過可以使用[[NSUserDefaultsstandardUserDefaults] synchronize]命令直接同步到文件裡,來避免數據的丟失。
    想要刪掉的話,用removeObjectForKey或者刪掉沙盒,也就是你的應用程序然後重新安裝。
    代碼實現,添加兩個文本框,和一個按鈕,在一個文本框輸入文本,點擊按鈕,會把文本框內容保存到NSUserDefaults中,然後從NSUserDefaults讀出來,輸出到另一個文本框: 按鈕觸發的操作:

    //將文本框的內容保存到NSUserDefaults

    NSUserDefaults *savePtb = [NSUserDefaultsstandardUserDefaults];

    [savePtbsetObject:self.textField.textforKey:@"input"];

    //讀取NSUserDefaults中的數據

    NSUserDefaults *readPtb = [NSUserDefaultsstandardUserDefaults];

    NSString *pstr = [readPtbobjectForKey:@"input"];

    self.self.inputText.text = pstr;

    有時候,我們需要在應用程序第一次打開時做一些事情,可以用NSUserDefaults來判斷應用程序是否第一次執行,

    可以在

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法利進行判斷:

    NSUserDefaults *userDF= [NSUserDefaultsstandardUserDefaults];

    NSNumber *number = [userDFobjectForKey:@"H"];

    if(number ==nil)//程序第一次執行

    {

    NSUserDefaults *userDF= [NSUserDefaultsstandardUserDefaults];

    [userDF setValue:[NSNumbernumberWithBool:YES]forKey:@"H"];

    [userDFsynchronize];

    要執行的其他代碼;

    }

    else//程序不是第一次執行

    {

    其他代碼; }

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved