以中间值显示警报(Objective-C或任何其他)

时间:2013-03-01 01:52:23

标签: objective-c

我遇到了问题,我尝试了几种方法,但我找不到解决方案。

问题(例如在Objective-C中) 我有一个从0开始的进度,每次迭代的值增加3点。即0,3,6,9,12,15等

好吧,我需要当计数器超过10时,会显示一个警告,但只有当超过10,20,30,40等时,在中间值(3,6,9等)应该不显示。

例如:

0 -> nothing
3 -> nothing
6 -> nothing
9 -> nothing
12 -> ALERT!!
15 -> nothing
18 -> nothing
21 -> ALERT!!
24 -> nothing
27 -> nothing
30 -> ALERT!!
33 -> nothing
36 -> nothing
[...]

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

value舍入为10的倍数。将value-3舍入为10的倍数。如果舍入值不同,则显示警告。

static int roundToMultipleOf10(int n) {
    return 10 * (n / 10);
}

static void showAlertIfAppropriateForValue(int value) {
    if (roundToMultipleOf10(value) != roundToMultipleOf10(value - 3)) {
        UIAlertView *alert = [[UIAlertView alloc] init...];
        [alert show];
    }
}

答案 1 :(得分:2)

您的要求意味着ALERT!!仅出现在x0,x1或x2中,其中x是大约10位数字:

for (int i = 0; i < 1000; i += 3) {
    if (i > 10 && i % 10 <= 2) {
        NSLog(@"ALERT!!");
    }
}

答案 2 :(得分:0)

在完成所有答案的混合后我的最终解决方案。 谢谢!

    // Round function
    int (^roundIntegerTo10)(int) =
    ^(int value) {
        return value / 10 * 10;
    };

    // Progress evaluator
    if (_currentProgress > _nextProgress && _currentProgress >= 10) {
        NSLog(@"ALERT!!!");
        _nextProgress = roundIntegerTo10(_currentProgress) + 10;
    }