我调用URLSession.share.datatask,然后才能完成用户弹出uiviewcontroller

时间:2017-03-19 16:34:29

标签: ios swift exception deinit urlsession

我不确定如何防止我的应用中出现错误。我需要使用URLSession.shared.dataTask调用服务器,如果我允许它完成,它可以正常工作。但是,如果我在URLSession.shared.dataTask完成之前将uiviewcontroller从堆栈中弹出,则会发生运行时错误,因为viewcontroller不再存在。它发生在json解析和网络调用的不同位置。通常在回叫或网络调用失败时显示错误。当uiviewcontroller取消或在网络调用代码中检测到uiviewcontroller已经消失时,有没有人知道如何停止网络调用,所以我不打电话给回调。我正在使用Xcode 8和iOS 10与Swift 3.谢谢。

1 个答案:

答案 0 :(得分:2)

弹出VC 之前,请将其命名为:

firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

(你可能需要转换o Swift,因为它们在Obj-c中,但是你明白了)

如果您愿意,also detect if it is the last VC可以弹出,如果您愿意,可以使用[dataTask cancel] dataTask = nil // if needed 方法执行此操作。