2015-12-10 88 views
-1

我在需要上传应用程序本地生成文件的应用程序中使用Dropbox iOS API。当应用程序生成一个文件时,它将被插入队列(一个单独的线程),并且我需要DBRestClient在后台将它发送到Dropbox;但不幸的是,DBRestClient需要一个ViewController委托(我没有在我的上下文中;是一个通用的NSObject类),当我调用上传文件方法时,似乎没有任何事情发生。Dropbox iOS核心API - 在单独线程中使用DBRestClient

任何人都可以帮助我吗?

回答

0

你调用一个uploadFile方法后,委托方法之一应该叫给你的回应:

- (void)restClient:(DBRestClient*)client uploadedFile:(NSString*)destPath from:(NSString*)srcPath 
     metadata:(DBMetadata*)metadata; 
- (void)restClient:(DBRestClient*)client uploadProgress:(CGFloat)progress 
     forFile:(NSString*)destPath from:(NSString*)srcPath; 
- (void)restClient:(DBRestClient*)client uploadFileFailedWithError:(NSError*)error; 
// [error userInfo] contains the sourcePath 

你是否实现了这些?

如果是的话,有可能导致不叫你的委托方法的几件事情:

  1. 你休息客户端是零或者被释放(例如,通过ARC)过早。
  2. 你在没有运行循环的后台线程中进行调用。
  3. 您应该回调的委托方法有一个错字。不幸的是,如果SDK无法找到调用的委托方法,SDK并不会提醒您;它只是完成而不告诉任何人。

第二个可能是相关的,因为你的描述,在这种情况下,这可能会有所帮助:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16-SW1

+0

第二个是我的情况。现在我用NSTimer调用这些方法。谢谢 –