2015-03-23 2 views
0

У меня есть приложение, в котором есть элемент стиля игры, хотя это не игра, у меня есть игровой центр, и я хотел бы уведомить пользователя текущего устройства каждый раз, когда у 100 'Chatters' есть присоединились к их Группе/Форуму. Я дам пользователям бесплатное бесплатное приложение DLC бесплатно после того, как они достигнут определенных этапов (1k подписали/присоединились к Чаттерам и т. Д.)Целые числа, функция вызова каждый номер X

Так что я пытаюсь уведомить пользователей о каждом количестве X подмножеств, используя Parse.com, но с трудностями, повторяющими это каждые 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; 
    } 
} 
+2

Почему не просто 'if (i% 100 == 0)' – shim

+0

Что это делает @shim? Я не знаю, как сделать много математики с поплавками и целыми числами в xcode, поэтому я прошу проще с API –

+0

@shim спасибо, что сработали. можете ли вы предложить это в качестве ответа, чтобы я мог отблагодарить вас за помощь мне –

ответ

1

Используйте оператор по модулю (%)

т.е. в вашем случае:

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

это, если заявление будет истинным каждый раз я делится на 100. Примечание: 0% 100 также 0, но в вашем случае это не должно быть проблемой, потому что вы всегда добавляете 1.

Оператор modulo % возвращает остальную часть левой rand делится на правый операнд. Он присутствует практически во всех современных языках программирования. Подробнее об этом 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 
+0

ohhh ok .. спасибо, что помогли мне учиться. теперь намного проще! –