Но процентComplete всегда показывает 0
Как вы отображаете процентComplete?Имейте в виду, что это число с плавающей точкой - если вы интерпретируете его как целое число, не передавая его, вы получите неправильный вывод.Например, это:
int x = 1750;
int y = 4000;
float result = 0;
if ( x > 0 ) {
result = ((float)x/(float)y)*100;
}
NSLog(@"[SW] %0.1f", result); // interpret as a float - correct
NSLog(@"[SW] %i", result); // interpret as an int without casting - WRONG!
NSLog(@"[SW] %i", (int)result); // interpret as an int with casting - correct
Выводит это:
2010-09-04 09:41:14.966 Test[6619:207] [SW] 43.8
2010-09-04 09:41:14.967 Test[6619:207] [SW] 0
2010-09-04 09:41:14.967 Test[6619:207] [SW] 43
Имейте в виду, что приведение значения с плавающей запятой к целочисленному типу просто отбрасывает вещи после десятичной запятой - поэтому вВ моем примере 43.8 отображается как 43. Чтобы округлить значение с плавающей запятой до ближайшего целого, используйте одну из функций округления из math.h, например:
#import <math.h>
... rest of code here
NSLog(@"[SW] %i", (int)round(result)); // now prints 44