2015-12-10 27 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調用這些方法。謝謝 –