Я использую КВО отслеживать ход выполнения файла, который получил:Использование КВО для отслеживания NSProgress
-(void)session:(MCSession *)session didStartReceivingResourceWithName:(NSString *)resourceName fromPeer:(MCPeerID *)peerID withProgress:(NSProgress *)progress
{
NSLog(@"RECEIVING... %@ from peer: %@", progress, peerID);
dispatch_sync(dispatch_get_main_queue(), ^{
[progress addObserver:self
forKeyPath:@"fractionCompleted"
options:NSKeyValueObservingOptionNew
context:NULL];
});}
и
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if (object == progress) {
// Handle new fractionCompleted value
[progressBar setProgress:progress.fractionCompleted animated:YES];
NSLog(@"Fraction Complete: %@", [NSNumber numberWithDouble:progress.fractionCompleted]);
return;
}
[super observeValueForKeyPath:keyPath
ofObject:object
change:change
context:context];
}
Я хотел бы использовать это, чтобы обновить UIProgressView. .. Но код происходит сбой на этой линии, и я не понимаю, почему:
[super observeValueForKeyPath:keyPath
ofObject:object
change:change
context:context];
EDIT:
Это ошибка
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<ViewController1: 0x15b57000>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
EDIT:
Если удалить супер observeValueForKeyPath: ... Ключевой путь, приложение не ломается, но NSLog (@ "Фракция Complete:% @ всегда сообщает значение «0».
Код, который вы видите в вопросе, это единственный код, который у меня есть. Если есть какой-либо другой код, который я должен добавить, пожалуйста, предоставьте его, спасибо – Alessandro
Попытайтесь избавиться от вызова super observValue .... –
Хорошо, я сделал, и приложение больше не разбивается, но информация о доле завершена всегда 0! И я знаю, что это не потому, что я зарегистрировал его с помощью NSTimer ... – Alessandro