NSUserDefault的使用,NSUserDefault使用

來源:互聯網
上載者:User

NSUserDefault的使用,NSUserDefault使用
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;  

}  

 

- (void) encodeWithCoder: (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] ;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.