ios - Dropbox 委托(delegate)方法不是第一次调用

标签 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("/")

}

问题是我有两个 View Controller 用于显示保管箱文件名,第一个 View Controller 正在调用委托(delegate)方法并完美地显示文件名和文件夹名称。但第二个不是。

在第二个 View Controller 中,
我观察到,如果我在第二个 View Controller 中上下滚动我的表格 View ,那么委托(delegate)方法会立即被调用,并且一旦它被链接,下次就会立即调用这些方法。

所以第一次委托(delegate)方法没有在我的第二个 Dropbox View Controller 中被调用,这就是我的问题。提前致谢。

restClient 委托(delegate)方法如下。
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()
}

最佳答案

有一些事情可能会导致您的委托(delegate)方法不被调用:

  • 您的其余客户端为零或过早释放(例如,由 ARC)。
  • 您在没有运行循环的后台线程中进行调用。
  • 您应该回调的委托(delegate)方法中有错字。不幸的是,如果 SDK 找不到要调用的委托(delegate)方法,它不会警告您;它只是在不告诉任何人的情况下完成。

  • 另外,请注意,您使用的 SDK 使用 API v1,该 API v1 已被弃用并且很快就会停用:

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

    您应该切换到 API v2:

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

    关于ios - Dropbox 委托(delegate)方法不是第一次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44370378/

    相关文章:

    ios - MkMapView 取消加载谷歌磁贴

    c# - 如何在 C# 中合并 Multicast Delegates 返回的结果?

    objective-c - 如何在 Objective-C 中使用自定义委托(delegate)

    ios - 如何在“打开方式...”菜单中使用我的应用程序将 pdf 文件作为 URL 加载

    ios - 要覆盖哪个委托(delegate)来调整自动滚动?

    ios - 我可以为 4.7 和 5.5 设置特定的自动布局约束吗

    swift - 通过 AVAssetExportSession 导出 mp4 失败

    Swift 5 iOS12 - 推送通知不起作用

    iOS swift : NSBlockOperation behaves differently on iPhone simulator 6s and 5s

    ios - Swift,如何告诉 Controller 另一个 Controller 是它的委托(delegate)