Ios 无法访问布尔值的属性
我只是试图根据某些逻辑将布尔值设置为true 这是我的密码 我的两个属性已设置Ios 无法访问布尔值的属性,ios,objective-c,Ios,Objective C,我只是试图根据某些逻辑将布尔值设置为true 这是我的密码 我的两个属性已设置 @property (nonatomic) BOOL stoneSwitch; @property (nonatomic) BOOL cystSwitch; 下面是我在故事板的开关上设置的一个动作 - (IBAction)switcherAction:(id)sender { if (self.customSwitcher.isOn) { if ([self.customLabel.text
@property (nonatomic) BOOL stoneSwitch;
@property (nonatomic) BOOL cystSwitch;
下面是我在故事板的开关上设置的一个动作
- (IBAction)switcherAction:(id)sender
{
if (self.customSwitcher.isOn) {
if ([self.customLabel.text isEqual:@"Stone Manip"]) {
NSLog(@"%d",self.cystSwitch);
if (self.cystSwitch == TRUE) {
[self.customSwitcher setOn:YES];
self.stoneSwitch = TRUE;
} else {
[self.customSwitcher setOn:NO];
}
} else {
self.cystSwitch = TRUE;
}
}
[self.delegate updateField:self.fieldName withBoolValue:self.customSwitcher.isOn];
}
-(void)setPlaceHolder:(NSString*)placeHolder
{
[super setPlaceHolder:placeHolder];
_customLabel.text = placeHolder;
}
我在我的计算机上重新登录,但它始终保持0。我错过了什么
编辑一个:
- (IBAction)switcherAction:(id)sender
{
if ([self.customLabel.text isEqual:@"Stone Manip"]) {
NSLog(@"%d",self.cystSwitch);
if (self.cystSwitch == TRUE) {
[self.customSwitcher setOn:YES];
self.stoneSwitch = TRUE;
} else {
[self.customSwitcher setOn:NO];
}
} else {
self.cystSwitch = TRUE;
NSLog(@"%d",self.cystSwitch);
[self.customSwitcher setOn:YES];
}
[self.delegate updateField:self.fieldName withBoolValue:self.customSwitcher.isOn];
}
我注意到,如果我在else条件下记录self.cystSwitch,则它确实正确反映,但一旦重新开始就会重置。这是因为我没有为我的属性使用指针吗?如果代码不适合您,您可能会在应用程序中的某个位置设置/更改self.cystSwitch属性。您的错误可能是您没有持久化数据,您是否考虑过将信息保存到NSUserDefaults或使用某种持久性(如plist)
[NSUserDefaults.standardUserDefaults setBool:YES forKey:@"cystSwitch"]
然后,当您再次启动应用程序时,请将其备份
[NSUserDefaults.standardUserDefaults setBool:YES forKey:@"cystSwitch"]
旁注: 您不应使用以下方法进行比较:
if (self.cystSwitch == TRUE)
你应该使用
if (self.cystSwitch)
问题在于BOOL不是本机类型,而是typedef:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
作为字符,其值不受TRUE
和FALSE
的限制。另一个值会发生什么
BOOL b = 42;
if (b)
{
// true
}
if (b != YES)
{
// also true
}
什么是
self.customLabel
?它的text
是否设置过除@“Stone Manip”
之外的其他设置?当它到达switcherAction时,您的开关必须始终处于关闭状态,所以只需返回0
。@wowzuzz:嘿,别难过,大多数人可能都经历过它。。。我知道我花了一点时间才明白-这些东西有时会让人麻木。谢谢你。我很感激。通过这些天的学习是一个缓慢但有益的过程。旋转两种不同类型的广告横幅。。。我会尝试回答中的示例,并在if/else中放置一个NSLog()
,然后运行几次,看看它是如何工作的。