在主线程上调用时,loadFile函数不下载文件

时间:2015-02-22 19:12:19

标签: ios objective-c multithreading dropbox dropbox-api

我目前正在开发一个iOS应用程序,它从Dropbox获取音乐文件的可流式网址并在设备上播放。 当用户点击一首歌曲时,它会打开一个视图控制器,在那里,我想要有下载文件的选项。所以我有一个IBAction:

- (IBAction)availableOfflinePressed:(id)sender {
    NSString *trackPath = sharedApp.trackTitle;

    NSLog(@"Available offline pressed for %@", trackName);

    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"Started downloading...");
        [self.restClient loadFile:trackPath intoPath:trackPath];
    });
}

现在,即使它在应用程序日志中抛出“已开始下载...”,该文件实际上也从未下载过。我知道dropbox sdk rest客户端在后台不执行函数,这就是我在主线程上使用GCD的原因。

那么,你能帮助我吗?我错过了什么吗?

提前感谢任何帮助

1 个答案:

答案 0 :(得分:0)

原来这是一个非常愚蠢的答案! restClient为nil,未在特定视图控制器中正确设置,因此无法触发Dropbox委托。

实际上,需要的是像你在AppDelegate或其他任何事情中那样初始化restClient,然后在特定视图控制器的self.restClient.delegate=self;函数中设置viewDidLoad()

感谢大家的回复! 快乐的编码!