这是我在viewDidLoad中写的。
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("/")
}
问题是我有两个用于显示Dropbox文件名的视图控制器,第一个视图控制器正在调用委托方法并完美地显示文件名和文件夹名。但第二个不是。
在第二个视图控制器中, 我观察到,如果我在第二个视图控制器中上下滚动我的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 :(得分:1)
有些事情可能导致您的委托方法无法被调用:
另请注意,您正在使用的SDK使用API v1,该版本已被弃用并且很快就会停用:
https://blogs.dropbox.com/developers/2016/06/api-v1-deprecated/
您应该切换到API v2: