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