2013年5月9日 星期四

NSUserDefaults

此類別用途在於存放一些簡單形態的東西至一個系統預設的plist檔案
用法十分簡單, 使用Key-Value方式儲存, 以下講一些常用的方法

NSUserDefaults是用Singleton, 所以每次要取得instance都必須這樣寫
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

在取得instance之後就可以使用它的一些方法, 例如:
[userDefaults setInteger:20 forKey:@"Integer"];
[userDefaults setObject:@"Object" forKey:@"String"];

再最後要寫以下這方法儲存所作的任何更動
[userDefaults synchronize];

而實際寫入檔案的位置在
/iPhone Simulator/6.1/Applications/xxxxxxxxxx/Library/Preferences/xxxx.plist

取值方式也很簡單, 一樣要先取得instance, 然後再用如下方式
[userDefaults integerForKey:@"Integer"];
[userDefaults stringForKey:@"String"];




以下是一些常用的存值方法
- (void)setObject:(id)value forKey:(NSString *)defaultName;
- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;
- (void)setFloat:(float)value forKey:(NSString *)defaultName;
- (void)setDouble:(double)value forKey:(NSString *)defaultName;
- (void)setBool:(BOOL)value forKey:(NSString *)defaultName;
13/7/15
特別說一下setObject這項
看了史丹佛課程教授講解, 這邊的object是指property list可存放的那些object, 也就是
NSArray, NSDictionary, NSNumber, NSString, NSDate, NSData 這六項



而取值方式就比較多元, 因為存值有存Object, 取值的時候可以看存的Object是哪個型態去對應
例如我寫的存String是用setObject: , 然後取值時用stringForKey:
從取值的方法可以看出NSUserDefaults可以存放哪些形態的資料
- (NSString *)stringForKey:(NSString *)defaultName;
- (NSArray *)arrayForKey:(NSString *)defaultName;
- (NSDictionary *)dictionaryForKey:(NSString *)defaultName;
- (NSData *)dataForKey:(NSString *)defaultName;
- (NSArray *)stringArrayForKey:(NSString *)defaultName;
- (NSInteger)integerForKey:(NSString *)defaultName;
- (float)floatForKey:(NSString *)defaultName;
- (double)doubleForKey:(NSString *)defaultName;
- (BOOL)boolForKey:(NSString *)defaultName;

沒有留言:

張貼留言