目标 C:按下按钮后切换属性的布尔值的问题
Posted
技术标签:
【中文标题】目标 C:按下按钮后切换属性的布尔值的问题【英文标题】:Objective C: Problem in switching BOOLEAN value of property after button press 【发布时间】:2011-06-24 00:38:05 【问题描述】:我正在尝试切换属性“isLiked”的布尔值,如下面的代码所示
//BOOL isLiked is defined in the header file as property of answer class
- (void)buttonPressed
NSLog(@"button pressed");
if ([btnType isEqualToString:@"like"])
self.answer.isLiked = !self.answer.isLiked;
NSLog(@"answer is: %i",self.answer.isLiked);
当我打印出“self.answer.isLiked”的值时,我看到返回的值始终为“0”。如何切换值??
【问题讨论】:
【参考方案1】:我猜self.answer
实际上是零。这将导致self.answer.isLiked = !self.answer.isLiked
什么都不做,并且会导致您的 NSLog 实际上记录 nil 的整数值,即 0。
【讨论】:
您对我的 self.answer 为 nil 的事实是完全正确的。我修复了它现在按预期工作。谢谢!【参考方案2】:我怀疑你的标题看起来有点像:
@property (nonatomic, getter=isLiked) BOOL liked;
在这种情况下,您的按钮按下代码需要是:
self.answer.liked = !self.answer.isLiked;
NSLog(@"answer is: %i",self.answer.isLiked);
注意你的布尔值的设置器去掉了'is'前缀,并使第一个字母小写。
【讨论】:
取决于编译器设置。我在用 4.0.2 发布一个新项目之前对其进行了测试,它编译得很好,但就是没有用。 编译器应该警告调用一个它不知道的方法 (setIsLiked:),它应该在运行时触发一个异常。 @Kevin Ballard:嗯,这让我担心我的机器是否正常。它安装了 XCode 3、4.0.2 和 4.2。我希望在 4.2 安装期间不选中 unix 工具就足够了,但听起来我已经构建了一个我无法信任的 frankencompiler。不过感谢您的反馈。以上是关于目标 C:按下按钮后切换属性的布尔值的问题的主要内容,如果未能解决你的问题,请参考以下文章