NSProgressIndicator setDoubleValue不使用参数

时间:2013-06-23 10:57:57

标签: objective-c macos nsmutableurlrequest nsprogressindicator

我在我的xcode项目中使用NSProgressIndicator(Mac OS X,而不是iOS)。我正在尝试异步下载文件,同时在进度指示器上显示下载进度。在我的项目中,单击更新按钮开始下载。每次收到数据后,都会更新进度,并调用app委托中的update_progress方法。

从NSLogs可以看到,进度值被传递给该方法。在具有此值的进度指示器上使用setDoubleValue无效。但是,使用静态值(例如setDoubleValue:50.0f)会更新进度指示器。

在.m中,loadData方法开始下载。在这里,您可以设置保存文件的位置(self.strFileNameWithPath),以及下面的几行,即从中下载文件的位置。我只是使用了一个2.5mb的文件,虽然小但是足够大,可以进行一些下载步骤。

在界面中,单击“更新”按钮开始下载。当收到块时,控制台将显示进度更新。

有人知道为什么会发生这种情况的原因,以及我如何解决这个问题? 提前谢谢!

编辑:不一致的方法是:

- (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

1 个答案:

答案 0 :(得分:0)

问题是我的init方法,下载器实现中的以下内容修复了它:

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

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

    return self;
}

为了快速编码尝试某些东西,我觉得很傻......