NSProgressIndicator setDoubleValue не работает с аргументом

Я использую NSProgressIndicator в своем проекте xcode (Mac OS X, а не iOS). Я пытаюсь выполнить асинхронную загрузку файла, показывая ход загрузки на индикаторе выполнения. В моем проекте нажатие на кнопку обновления запускает загрузку. После каждого получения данных прогресс обновляется и вызывается метод update_progress в делегате приложения.

Как видно из NSLogs, этому методу передается значение прогресса. Использование setDoubleValue для индикатора прогресса с этим значением не имеет никакого эффекта. Однако использование статического значения (например, setDoubleValue:50.0f) действительно обновляет индикатор выполнения.

В .m метод loadData запускает загрузку. Здесь вы можете указать место для сохранения файла (self.strFileNameWithPath), а несколькими строками ниже — место для загрузки файла. Я просто использую файл размером 2,5 МБ, небольшой, но достаточно большой, чтобы выполнить несколько шагов загрузки.

В интерфейсе нажмите кнопку «обновить», чтобы начать загрузку. Консоль будет отображать обновления прогресса по мере получения фрагментов.

Кто-нибудь знает какие-либо причины, почему это происходит, и как я могу это исправить? Заранее спасибо!

Изменить: метод с несоответствием:

- (void)update_progress:(float)value{
    double thevalue = (double)value;
    NSLog(@"value: %f",thevalue);
    [self.progress_indicator setDoubleValue:thevalue];
    NSLog(@"Prgoress: %f",[self.progress_indicator doubleValue]);
}

Во время каждого шага выполнения значение показывает правильное значение выполнения, но индикатор выполнения не реагирует на setDoubleValue, так как второй NSLog возвращает 0,0.

Ниже показано, что показывает консоль:

value: 2.770802
Prgoress: 0.000000
value: 22.662386
Prgoress: 0.000000
value: 69.881004
Prgoress: 0.000000

person Tiago    schedule 23.06.2013    source источник
comment
Может быть, это чересчур просить людей загрузить ваш проект и отладить его для вас. Есть ли шанс, что вы могли бы изолировать проблему, может быть, до 10-15 строк кода и включить их в пост? Если конечно вы уже сами не нашли проблему в процессе :-)   -  person Monolo    schedule 23.06.2013
comment
Спасибо, Моноло, я подумал, что, поскольку это такой небольшой проект, и я не был уверен, что точный метод показал что-то полезное, я подумал, что будет разумнее прикрепить весь проект. В любом случае, я обновил свой пост :-)   -  person Tiago    schedule 23.06.2013
comment
Имеет ли self.progress_indicator какое-либо значение, отличное от нуля? Если это IBOutlet, подключен ли он в файле nib (или xib, если хотите)?   -  person Monolo    schedule 23.06.2013
comment
Еще раз спасибо за ответ. Он подключен в файле xib и имеет ненулевое значение: progInd: ‹NSProgressIndicator: 0x10062e6a0› Не совсем уверен, почему соединение в прикрепленном проекте потеряно...   -  person Tiago    schedule 23.06.2013


Ответы (1)


Проблема заключалась в моем методе инициализации, в реализации загрузчика это было исправлено:

- (id)init{
    self = [super init];

    if (self) {
        appdelegate = [[NSApplication sharedApplication] delegate];
    }

    return self;
}

Так много для быстрого кодирования, чтобы попробовать что-то, я чувствую себя глупо...

person Tiago    schedule 23.06.2013