我刚刚在我的代码中添加了条件“if”语句,以便在用户从可能的事件列表中连续选择相同项目时将标签设置为“未定义的事件”,但我遗漏了一些东西,因为 if语句似乎没有捕捉到重复的点击。这是有问题的代码:
-(void) refreshData
{
currentActivity = [TimedActivity MR_findFirstOrderedByAttribute:@"timedActivityTapped" ascending:NO];
NSArray *timedActivityRecords = [TimedActivity MR_findAllSortedBy:@"timedActivityTapped" ascending:YES];
previousActivity = [timedActivityRecords objectAtIndex:timedActivityRecords.count-2];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init];
[dateFormat setDateFormat: @"MM/dd/yyyy hh:mm:ss"];
self.timeStampLabel.text = [dateFormat stringFromDate:currentActivity.timedActivityTapped];
self.previousActivityLabel.text = previousActivity.timedActivityName;
[NSTimer scheduledTimerWithTimeInterval:.5
target:self
selector:@selector(updateTime)
userInfo:nil
repeats:YES];
// This if statement should evaluate TRUE if the user taps the same activity consecutively
// but control is skipping it as if it is FALSE
if (currentActivity.timedActivityName == previousActivity.timedActivityName)
{
self.currentActivityLabel.text = @"Undefined activity";
}
else
{
self.currentActivityLabel.text = currentActivity.timedActivityName;
}
[self previousActivityDuration];
}
这是事件列表的屏幕截图:
这是报告 View 的屏幕截图,显示了当前正在计时的事件、开始时间、运行时间、先前选择的事件以及该事件运行了多长时间:
如您所见,即使连续两次选择“弹吉他”,if 语句也未能捕获它并将“未定义的事件”替代文本放入“进行中”标签中。
我正在使用 Core Data 和 MagicalRecord 框架。
有人可以告诉我哪里出错了吗?我是一个公认的菜鸟,但到目前为止一直很好,直到我遇到这个问题。
非常感谢您的帮助!
最佳答案
尝试将 if 语句更改为
if ([currentActivity.timedActivityName isEqualToString:previousActivity.timedActivityName])
{
self.currentActivityLabel.text = @"Undefined activity";
}
else
{
self.currentActivityLabel.text = currentActivity.timedActivityName;
}
关于iOS if conditional 似乎没有按预期进行评估。愚蠢的错误或有趣的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20989420/