Dropbox委托方法不是第一次调用

时间:2017-06-05 13:43:40

标签: ios swift delegates dropbox rest-client

这是我在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()
}

1 个答案:

答案 0 :(得分:1)

有些事情可能导致您的委托方法无法被调用:

  1. 您的休息客户是零或正在过早地被释放(例如,通过ARC)。
  2. 您正在后台线程中进行调用,该线程没有运行循环。
  3. 您应该回拨的委托方法中有一个拼写错误。不幸的是,如果SDK无法找到委托方法,SDK就不会发出警告;它只是完成而没有告诉任何人。
  4. 另请注意,您正在使用的SDK使用API​​ v1,该版本已被弃用并且很快就会停用:

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

    您应该切换到API v2:

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