2017-06-05 52 views
0

這是我寫的viewDidLoad。Dropbox委託方法不是第一次調用

if DBSession.shared().isLinked() { 
     print("already linked") 

     initDropboxRestClient() 
    } 
    else 
    { 
     print("connecting2") 
     DBSession.shared().link(from: self) 
     initDropboxRestClient() 
    } 

和函數initDropboxRestClient()寫在下面。

func initDropboxRestClient() { 
    dbRestClient = DBRestClient(session: DBSession.shared()) 
    dbRestClient.delegate = self 
    dbRestClient.loadMetadata("/") 

}

問題是我具有用於顯示收存箱文件名,第一視圖控制器調用委託方法和完美顯示文件名和文件夾名的兩個視圖控制器。但第二個不是。

在第二個視圖控制器, 我觀察到,如果我滾動我的tableview在第二個視圖控制器上下,那麼委託方法會立即被調用,並且一旦下次立即調用方法時它會被鏈接。

因此,第一次委託方法沒有在我的第二個Dropbox視圖控制器中調用這就是我的問題在這裏。提前致謝。

restClient委託方法如下。

func restClient(_ client: DBRestClient!, loadedMetadata metadata: DBMetadata!) { 
    for file in metadata.contents 
    { 
     dbMetadataArray.append(file as! DBMetadata) 
     fileNamesArray.append((file as AnyObject).filename) 
    } 
    tableView.reloadData() 
    self.myActivityIndicator.stopAnimating() 
    self.myActivityIndicator.hidesWhenStopped = true 

} 

func restClient(_ client: DBRestClient!, loadMetadataFailedWithError error: Error!) { 
    print("in loadMetadataFailedWithError method in dropbox email view controller") 
    print("Error dscription = %@",[error.localizedDescription]) 
    let alert = UIAlertController(title: "Go Back.", message: "Try Once Again", preferredStyle: UIAlertControllerStyle.alert) 
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil)) 
    self.myActivityIndicator.stopAnimating() 
    self.myActivityIndicator.hidesWhenStopped = true 
    tableView.reloadData() 
} 
+0

請向我們展示相關代表方法的實施......謝謝! –

+0

我已經添加了委託方法。謝謝。 – aditya

回答

1

有可能導致不叫你的委託方法的幾件事情:

  1. 你休息客戶端是零或者被釋放(例如,通過ARC)過早。
  2. 你在沒有運行循環的後臺線程中進行調用。
  3. 應該回調的代理方法在其中存在拼寫錯誤。不幸的是,如果SDK無法找到調用的委託方法,SDK並不會提醒您;它只是完成而不告訴任何人。

而且,請注意,SDK您在使用使用API​​ V1,它被廢棄和退役不久反正:

https://blogs.dropbox.com/developers/2016/06/api-v1-deprecated/

您應該切換到API第2版:

https://www.dropbox.com/developers/documentation

+0

好的答案;)我只會添加第四點:*他可能忘記在他的委託*內(當從DropBox接收到新數據時)調用tableView.reloadData()。這個調用會在相應的'tableView'中強制* refresh *。 –

+0

我已經添加了委託方法。並重新打電話在那裏。 – aditya

+0

NSURLSession/NSURLConnection HTTP加載失敗(kCFStreamErrorDomainSSL,-9806) 第一次我在我的日誌中得到這一行。 – aditya