Я ищу помощь при попытке обновить индикатор прогресса с использованием структуры MRProgress. Я смог настроить индикатор прогресса, но я не знаю, как рассчитать и обновить его прогресс. Я использую CloudKit и пытаюсь показать прогресс при сохранении CKRecord. Может ли кто-нибудь дать мне какое-то направление? Заранее спасибо!Обновление прогресса с MRProgress
self.hud = [MRProgressOverlayView showOverlayAddedTo:self.myCollectionView animated:YES];
self.hud.mode = MRProgressOverlayViewModeDeterminateCircular;
self.hud.titleLabelText = @"Uploading...";
// prepare the CKRecord and save it
[self.ckManager saveRecord:[self.ckManager createCKRecordForImage:self.imageDataAddedFromCamera] withCompletionHandler:^(CKRecord *record, NSError *error) {
if (!error && record) {
NSLog(@"INFO: Record saved successfully for recordID: %@", record.recordID.recordName);
// need to get the recordID of the just saved record before adding the CID to the CIDArray
self.imageDataAddedFromCamera.recordID = record.recordID.recordName;
[self.imageLoadManager addCIDForNewUserImage:self.imageDataAddedFromCamera]; // update the model with the new image
// update number of items since array set has increased from new photo taken
self.numberOfItemsInSection = [self.imageLoadManager.imageDataArray count];
//[MRProgressOverlayView dismissAllOverlaysForView:self.view animated:YES];
[self.hud dismiss:YES];
[self.hud removeFromSuperview];
} else {
NSLog(@"ERROR: Error saving record to cloud...%@", error.localizedDescription);
[self alertWithTitle:@"Yikes!" andMessage:@"We encountered an issue trying to upload your photo to the cloud."];
}
}];
Обновление: Преобразование методов облачного метода из удобного API в CKOperations в моем классе CKManager. Я могу увидеть обновление прогресса через журнал, но я не вижу, как вернуть его в viewcontroller. Если бы я должен был добавить его к обработчику завершения, не было бы это только отправить его назад, как только все будет завершено? Вот мой обновленный код ...
CKManager.h - (void) saveRecord: (NSArray *) records withCompletionHandler: (void (^) (NSArray * records)) completeHandler;
CKManager.m - (Недействительными) saveRecord: (NSArray *) записывает withCompletionHandler: (аннулируются (^) (NSArray *)) completionHandler {
NSLog(@"INFO: Entered saveRecord...");
CKModifyRecordsOperation *saveOperation = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:records recordIDsToDelete:nil];
saveOperation.perRecordProgressBlock = ^(CKRecord *record, double progress) {
if (progress <= 1) {
NSLog(@"Save progress is: %f", progress);
}
};
saveOperation.completionBlock =^{
NSLog(@"Save operation completed!");
completionHandler(records);
};
[self.publicDatabase addOperation:saveOperation];
}
Спасибо, сэр! Я займусь этим. – SonnyB
Я предполагаю, что вы говорите конкретно об этом ... perRecordProgressBlock Свойство Блок для выполнения с информацией о ходе выполнения для отдельной записи. Объявление ОБЪЕКТИВ-C @property (неатомный, копия) void (^ perRecordProgressBlock) (запись CKRecord *, двойной прогресс) – SonnyB
Да, это так. Имейте в виду, что нет никакой гарантии, что это называется. В документации указано: Объект операции выполняет этот блок в ноль или более раз для каждой записи в свойстве recordsToSave. –