У меня большая проблема, и я не мог решить ее уже несколько дней.Не удается получить цвет из NSUserDefaults при первом запуске приложения
Когда приложение загружается в первый раз, я сохраняю 4 цвета в NSUserDeafaults в первом UIViewController.
ViewController.m
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSUserDefaults *sharedDefaults = [NSUserDefaults standardUserDefaults];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger countValue = [defaults integerForKey:@"Array"];
if ([sharedDefaults boolForKey:@"FirstLaunch"])
{
[self openSubView];
[sharedDefaults setBool:NO forKey:@"FirstLaunch"];
[sharedDefaults synchronize];
[self saveColorsToDefaults];
// [prefs synchronize];
} // Do any additional setup after loading the view.
else if(countValue == 1)
{
}
}
-(void)saveColorsToDefaults{
const CGFloat *components1 = CGColorGetComponents([UIColor darkGrayColor].CGColor);
const CGFloat *components2 = CGColorGetComponents([UIColor blueColor].CGColor);
const CGFloat *components3 = CGColorGetComponents([UIColor redColor].CGColor);
const CGFloat *components4 = CGColorGetComponents([UIColor purpleColor].CGColor);
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setFloat:components1[0] forKey:@"cr"];
[prefs setFloat:components1[1] forKey:@"cg"];
[prefs setFloat:components1[2] forKey:@"cb"];
[prefs setFloat:components1[3] forKey:@"ca"];
[prefs setFloat:components2[0] forKey:@"cr2"];
[prefs setFloat:components2[1] forKey:@"cg2"];
[prefs setFloat:components2[2] forKey:@"cb2"];
[prefs setFloat:components2[3] forKey:@"ca2"];
[prefs setFloat:components3[0] forKey:@"cr3"];
[prefs setFloat:components3[1] forKey:@"cg3"];
[prefs setFloat:components3[2] forKey:@"cb3"];
[prefs setFloat:components3[3] forKey:@"ca3"];
[prefs setFloat:components4[0] forKey:@"cr4"];
[prefs setFloat:components4[1] forKey:@"cg4"];
[prefs setFloat:components4[2] forKey:@"cb4"];
[prefs setFloat:components4[3] forKey:@"ca4"];
[prefs synchronize];
NSLog(@"I just saved colors");
}
И после того, как мне нужно, чтобы установить эти цвета `DrawViewControllers чертежные инструменты. Я могу получить только последние 3 цвета, но 1-й цвет не появляется.
Но когда я установил цвет для 1-го инструмента через colorPicker
и сохранил все цвета снова до NSUserDefaults
, он отлично работает!
-(void)LoadColorsAtStart
{
NSUserDefaults *prefers = [NSUserDefaults standardUserDefaults];
UIColor* tColor = [UIColor colorWithRed:[prefers floatForKey:@"cr"] green:[prefers floatForKey:@"cg"] blue:[prefers floatForKey:@"cb"] alpha:[prefers floatForKey:@"ca"]];
UIColor* tColor2 = [UIColor colorWithRed:[prefers floatForKey:@"cr2"] green:[prefers floatForKey:@"cg2"] blue:[prefers floatForKey:@"cb2"] alpha:[prefers floatForKey:@"ca2"]];
UIColor* tColor3 = [UIColor colorWithRed:[prefers floatForKey:@"cr3"] green:[prefers floatForKey:@"cg3"] blue:[prefers floatForKey:@"cb3"] alpha:[prefers floatForKey:@"ca3"]];
UIColor* tColor4 = [UIColor colorWithRed:[prefers floatForKey:@"cr4"] green:[prefers floatForKey:@"cg4"] blue:[prefers floatForKey:@"cb4"] alpha:[prefers floatForKey:@"ca4"]];
[prefers synchronize];
[self extractRGBforBlack:tColor];
[self extractRGBforBlue:tColor2];
[self extractRGBforRed:tColor3];
[self extractRGBforLine:tColor4];
[self.colorBar1 setTextColor:self.blackExtract];
[self.colorBar2 setTextColor:self.blueExtract];
[self.colorBar3 setTextColor:self.redExtract];
[self.colorBar4 setTextColor:self.lineExtract];
NSLog(@"I have extracted colors");
}
У меня есть 5 аналогичных DrawViewControllers
и все работы с рисованием UIView
.
В коде [sharedDefaults boolForKey: @ "FirstLaunch"] всегда будет возвращать NO. При первом запуске приложения этот пользователь по умолчанию не существует, и boolForKey вернет NO, поэтому условный код никогда не будет выполняться. – geowar
Большое спасибо, ваша помощь похожа на свет в конце туннеля ... но я не могу понять, что мне нужно делать. Каково решение? –
На самом деле я понял и [sharedDefaults boolForKey: @ «FirstLaunch»] работает хорошо. Он показывает Subview только в FirstLaunch. Проблема с правильным извлечением первого цвета. –