Я относительно новичок в Objective C, и мне было интересно, как правильно использовать элемент пользовательского интерфейса NSProgressIndicator
. Чего я хочу добиться, так это, допустим, я знаю, каким будет окончательный размер файла, и файл в данный момент загружается.
- Как бы вы выбрали самый последний элемент в папке загрузок и узнали его текущий размер.
- Как бы вы отслеживали его состояние загрузки по сравнению со значением, которое вы уже знаете.
- Как бы вы отобразили это в файле
NSProgressIndicator
.
Пока у меня есть это, чтобы проверить размер файла:
NSString *filePath = [NSString stringWithFormat:@"~/Downloads/foo_bar"];
NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];
NSInteger fileSize = [[fileAttributes objectForKey:NSFileSize] integerValue];
NSString *fileSizeStr = [NSByteCountFormatter stringFromByteCount:fileSize countStyle:NSByteCountFormatterCountStyleFile];
NSLog(@"FileSize: %@",fileSizeStr);
return fileSizeStr;
И это для обновления индикатора выполнения:
[showProgress startAnimation:nil];
dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(backgroundQueue, ^{
for (NSUInteger i = 0; i < 100; i++) {
dispatch_async(dispatch_get_main_queue(), ^{
[self->showProgress incrementBy:1.0];
});
}
dispatch_async(dispatch_get_main_queue(), ^{
[self->showProgress stopAnimation:nil];
});
});