我正在使用按钮来调用@interface中声明的int值的更改。这是我的接口代码。
@interface CheckInController ()
@property (nonatomic, assign) int checkInDate;
@end
按钮选择器的代码
- (void)checkin {
self.checkInDate++;
NSLog(@"checkInDate: %d",_checkInDate);
}
无论何时单击按钮,控制台面板都将显示如下
2017-08-01 16:46:39.631 HeJing[1888:64607] checkInDate: 0
2017-08-01 16:46:40.057 HeJing[1888:64607] checkInDate: 0
2017-08-01 16:46:40.342 HeJing[1888:64607] checkInDate: 0
2017-08-01 16:46:40.578 HeJing[1888:64607] checkInDate: 0
之后,我分配一些这样的int值
self.checkInDate = 1;
NSLog(@"checkInDate: %d",_checkInDate);
控制台面板始终显示
2017-08-01 17:06:38.182 HeJing[1991:75284] checkInDate: 0
2017-08-01 17:06:39.101 HeJing[1991:75284] checkInDate: 0
2017-08-01 17:06:39.255 HeJing[1991:75284] checkInDate: 0
2017-08-01 17:06:39.401 HeJing[1991:75284] checkInDate: 0
我做错什么了吗?
以上所有代码均在
.m
文件中运行。和我的setter方法
- (void)setCheckInDate:(int)checkInDate {
NSString *infoString = [NSString stringWithFormat:@"已连续签到%d天,再坚持%d天就可以积分翻倍哦!",_checkInDate,6 - _checkInDate];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:infoString];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:0.97 green:0.44 blue:0.13 alpha:1.00] range:NSMakeRange(5, 2)];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:0.97 green:0.44 blue:0.13 alpha:1.00] range:NSMakeRange(11, 2)];
_checkInInfoLabel.attributedText = attributedString;
}
最佳答案
您正在通过覆盖- (void)setCheckInDate:(int)checkInDate
使用自定义设置器。
因此,当您编写self.checkInDate = 1;
时,它会调用自定义设置器。
但是在该设置方法中,您没有写_checkInDate = checkInDate
。
添加此选项可以解决您的问题。