2011-04-02 75 views
5

店加载的backgroundColor -如何存储和NSUserDefaults的中

-(IBAction) setMyColor:(id)sender{ 

if (sender == yellowButton) { 
    [colorView setBackgroundColor:[UIColor yellowColor]]; 
} 

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
UIColor *strColor = [colorView backgroundColor]; 
[userDefaults setObject:strColor forKey:@"myColor"]; 
[userDefaults synchronize]; 

}

负载 -

- (void)viewDidLoad { 

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
[colorView setBackgroundColor[UIColor [userDefaults objectForKey:@"myColor"]]]; 

[super viewDidLoad]; 

}

,但它无法运行...... 也许问题是'如何从UIView获取backgroundColor值'?

回答

13

可以使用

//save  
    NSData *colorData = [NSKeyedArchiver archivedDataWithRootObject:color]; 
    [[NSUserDefaults standardUserDefaults] setObject:colorData forKey:@"myColor"]; 

//retrieve 
    NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"myColor"]; 
    UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData]; 

or 

//save 
const CGFloat *components = CGColorGetComponents(pColor.CGColor); 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setFloat:components[0] forKey:@"cr"]; 
[prefs setFloat:components[1] forKey:@"cg"]; 
[prefs setFloat:components[2] forKey:@"cb"]; 
[prefs setFloat:components[3] forKey:@"ca"]; 

//retrieve 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
UIColor* tColor = [UIColor colorWithRed:[prefs floatForKey:@"cr"] green:[prefs floatForKey:@"cg"] blue:[prefs floatForKey:@"cb"] alpha:[prefs floatForKey:@"ca"]]; 
+0

第一个选项为我工作。谢谢! – 2012-09-06 12:07:57

+0

这帮助了我很多...非常有用的GP方法,因为NSUserDefaults不能存储常规对象(有道理 - 您必须像使用其他存储方法一样序列化它们)。谢谢! – 2013-11-20 00:48:45

相关问题