-1

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

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

我也试过

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

但是那个错误与“错误的接收器类型'BOOL'”

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

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

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

4

2 回答 2

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 名称更改为isHighlightedandsetIsHighlighted:

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

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

或者

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

您的第一次尝试[led.highlighted:...]只是语法不正确。第二个,[led.highlighted setValue:...]使用访问器获取highlighteda BOOL,然后尝试向它发送消息。BOOLs 不是对象,因此您不能向它们发送消息。

于 2012-06-13T20:10:35.217 回答
0
led.highlighted = [[NSUserDefaults standardUserDefaults] boolForKey:@"led"];

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

于 2012-06-13T20:06:35.420 回答