【问题标题】:Integers, call function every X number整数,每 X 个数调用函数
【发布时间】:2015-03-23 04:00:56
【问题描述】:

我有一个包含游戏风格元素的应用程序,即使它不是游戏,我有游戏中心工作,并且希望每次有 100 个“聊天者”加入他们的群组/论坛时通知当前设备用户。一旦用户达到某些里程碑(1k 订阅/加入 Chatter 等),我将免费为用户提供应用内 DLC

因此,我尝试使用 Parse.com 通知用户每 X 个订阅者,但每 100 次重复此操作时遇到困难。我能够让它以这种方式工作,但是手动添加这些有点令人厌烦。有没有内置的 API 方法可以让这更容易?

PFQuery *query = [PFQuery queryWithClassName:@"Groups"];
[query getObjectInBackgroundWithId:@"------vNDd" block:^(PFObject *object, NSError *error) {
[object incrementKey:@"Group_Chatters" byAmount:[NSNumber numberWithInt:1]];
[object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (succeeded) {
        NSNumber *objectNumber = [object valueForKey:@"Group_Chatters"];
        int subscribers = [objectNumber intValue];
        if ([self subscribersIsNewMilestone:subscribers]) {
            //Send Notification
        }
    } else {

    }
}];
}];

-(BOOL)subscribersIsNewMilestone:(int)subscribers {
  int i = subscribers + 1; //This will include the new subscription that just happened

  if ((i == 100) || (i == 200) || (i == 300) || (i == 400) || (i == 500) || etc etc etc ) {
      return YES;
  } else {
      return NO;
  }
}

【问题讨论】:

  • 为什么不只是if (i % 100 == 0)
  • @shim 有什么作用?我不知道如何在 xcode 中用浮点数和整数做很多数学运算,这就是为什么我用 API 询问更简单的方法
  • @shim 谢谢你的工作。你能提供这个作为答案吗?这样我就可以相信你帮助了我

标签: ios math parse-platform int


【解决方案1】:

使用模运算符 (%)

即在你的情况下:

if (i % 100 == 0) {
...

每当 i 可被 100 整除时,此 if 语句都会为真。注意:0 % 100 也是 0,但在您的情况下,这应该不是问题,因为您总是加 1。

模运算符% 返回左操作数除以右操作数的余数。它几乎存在于所有现代编程语言中。更多内容here

例如

int x = 10
x % 2 // 0 because 10 / 2 = 5, remainder 0
x % 3 // 1 because 10 / 3 = 3, remainder 1
x % 0 // division by zero error, because 10 / 0 is undefined

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多