2017-06-05 48 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

相关问题