Just a Computer Graphics Studio & My Life

[iOS] 使用 NSUserDefaults

很常使用到輕量級儲存方式NSUserDefaults,在此記錄一下它基本的使用方式。我的例子是要做一個switch,控制是否能夠編輯。然後很簡單地宣告property,然後實作settergetter

由於未來可能會不斷擴充,於是把它獨立出來成為一個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的用法(輕量級本地數據存儲)

Advertisements

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: