很常使用到輕量級儲存方式NSUserDefaults,在此記錄一下它基本的使用方式。我的例子是要做一個switch,控制是否能夠編輯。然後很簡單地宣告property,然後實作setter和getter。
由於未來可能會不斷擴充,於是把它獨立出來成為一個class,如此更容易修改與管理。於是宣告並實作class method來獲得singleton,並藉由此永遠的單一實例呼叫instance method來存取值。
.h用來宣告
static NSString *const HMCanEdit = @"HMCanEdit"; @interface HMUserDefaultManager : NSObject @property (nonatomic) BOOL canEdit; +(HMUserDefaultManager *)sharedManager; @end
.m就去實作
@implementation HMUserDefaultManager
+(HMUserDefaultManager *)sharedManager
{
static HMUserDefaultManager *sharedManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedManager = [[HMUserDefaultManager alloc] init];
});
return sharedManager;
}
-(BOOL)canEdit
{
return [[NSUserDefaults standardUserDefaults] boolForKey:HMCanEdit];
}
-(void)setCanEdit:(BOOL)canEdit
{
[[NSUserDefaults standardUserDefaults] setBool:canEdit forKey:HMCanEdit];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end
請記得加上synchronize,因為系統不會立即儲存更動的資料,偶爾忘了加入那行,讓我以為userDefaults沒效果:P
NSUserDefaults會儲存在路徑:/Library/Prefereces,想要找到它,在debug模式遇到中斷點時打指令:po NSHomeDirectory(),即可獲得根目錄路徑,接著在終端機打指令:open “路徑",即可開啟目標資料夾囉~
我們將會發現,NSUserDefaults是一個在平凡不過的.plist檔。
參考:用 NSUserDefaults 判斷 iOS app 使用者的第一次執行、iOS開發筆記 - NSUserDefaults的使用、IOS中NSUserDefaults的用法(輕量級本地數據存儲)。
隨意留個言吧:)~