3
NSUserDefaults的初始化
我有這個初始化的對象:如何降低高圈複雜度,同時從
-(id)init
{
self = [super init];
if (self) {
if([[NSUserDefaults standardUserDefaults] objectForKey:kTermsAccepted] != nil){
_termsAccepted = [[NSUserDefaults standardUserDefaults] boolForKey:kTermsAccepted];
}
if([[NSUserDefaults standardUserDefaults] objectForKey:kInitialSetupCompleted] != nil){
_initialSetupCompleted = [[NSUserDefaults standardUserDefaults] boolForKey:kInitialSetupCompleted];
}
if([[NSUserDefaults standardUserDefaults] objectForKey:kDashboardMessage] != nil){
_dashboardMessage = [[NSUserDefaults standardUserDefaults] objectForKey:kDashboardMessage];
} else{
_dashboardMessage = [[NSBundle mainBundle] localizedStringForKey:kDMDefaultDashboardMessage value:kDMDefaultDashboardMessage table:nil];
}
//50 other if statements
}
return self;
}
這將是一個更好的方式來做到這一點,所以我沒有得到這些警告,而這樣做的OCLint分析?
謝謝!
好的,也許我的問題並不清楚。或者,也許是。但是,如果「/ 50其他if語句」中還有其他類型的變量,則不僅是BOOL。我有NSStrings,NSMutableArrays,NSDate等。直接任務是否可以與任何類型的工作? – Jan
我實際上添加了一個我的情況,我想用默認值初始化,以防NSUserDefaults不在那裏... – Jan
我可能沒有讀到這個問題。我的錯。在編輯過程中,嘗試使用' - [NSUserDefaults registerDefaults:]'來設置NSUserDefaults在找不到值時應該返回的值。他們從不覆蓋實際存儲的信息,並且自己從不寫入商店。這僅僅是內存回退。 – Tommy