获取NSUserDefaults上的BOOL值

时间:2012-06-13 20:00:58

标签: objective-c ios

在我的viewDidLoad中,我有以下内容。但我似乎无法正确使用语法。

[led.highlighted: [[NSUserDefaults standardUserDefaults] boolForKey:@"led"]];

我也试过

[led.highlighted setValue:[[NSUserDefaults standardUserDefaults] boolForKey:@"led"]];

但是那个错误的“Bad Receiver type'BOOL'”

我从IBAction设置值的方法似乎没问题。

[[NSUserDefaults standardUserDefaults] setBool:led.isHighlighted forKey:@"led"];

那么我究竟该如何返回led.highlighted的值?

2 个答案:

答案 0 :(得分:4)

led.highlighted访问该属性;取决于它在语句的右侧或左侧,它分别使用getter或setter。

led.highlighted = YES;
// Equivalent to: [led setHighlighted:YES];
BOOL thatLEDIsLitUp = led.highlighted;
// Equivalent to: BOOL thatLEDIsLitUp = [led highlighted];

这假设您没有将getter和setter名称更改为isHighlightedsetIsHighlighted:

鉴于此,要设置属性,您可以执行以下操作:

led.highlighted = [[NSUserDefaults standardUserDefaults] boolForKey:@"led"];

[led setHighlighted:[[NSUserDefaults standardUserDefaults] boolForKey:@"led"]];

您的第一次尝试,[led.highlighted:...]只是错误的语法。第二个,[led.highlighted setValue:...]使用访问者获取highlighted BOOL,然后尝试向其发送消息。 BOOL不是对象,因此您无法向其发送消息。

答案 1 :(得分:0)

led.highlighted = [[NSUserDefaults standardUserDefaults] boolForKey:@"led"];

只要你的highlighted财产是 @property (nonatomic, assign) BOOL highlighted;