发生连接问题时,Parse查询不会继续

时间:2015-09-08 19:16:19

标签: parse-platform unity3d

当我们调用ParseCloud.CallFunctionAsync或ParseObject.GetQuery(...)时,FindAsync()函数和Internet连接在调用期间失败,该函数从不给出任何错误或超时或抛出异常。它只是无限期地坐在那里,它永远不会继续进入回调函数。以下是一个例子。我们需要一种方法来捕获该场景,以便我们可以向用户显示正确的消息。

是否有人就解决错误的最佳方法提出建议,以及如果在通话期间连接失败,如何捕获错误。

谢谢

  

    try
    {
    var query = ParseObject.GetQuery(...);
           query.FindAsync().ContinueWith(t => {
             try {
                if (t.IsFaulted || t.IsCanceled)
                {
                   Debug.Log("Error Exception: " + t.Exception);
                    foreach(var e in t.Exception.InnerExceptions) {
                    ParseException parseException = (ParseException) e;
                    Debug.Log("Error message: " + parseException.Message);
                    Debug.Log("Error code: " + parseException.Code);
                }

                else {
                         //handle normal situation
                         ....

                  }
            }
            catch(Exception e)
            {
                Debug.Log(e.ToString());
            }
          });
      }
    catch(Exception e2)
    {
           Debug.Log(e2.ToString());
    }

1 个答案:

答案 0 :(得分:0)

在解析中,你可以处理很多事情的错误。

我认为如果没有互联网连接就停止查询你可以使用kPFErrorConnectionFailed

实施例

var query = PFQuery()
query.findObjectsInBackgroundWithBlock{
(success:Bool!, error:NSError!)-> Void in
                    if (error == nil) {

                      //continue query
                    }
                    else{
                        // 100 is the kPFErrorConnectionFailed which is for your scenario 
                        if(error.code == 100) {
                            //handle error

                        }


                }     

        }

需要注意的是,在较新的解析框架中,它们现在由代码编号而非名称处理,您需要搜索错误代码以处理特定方案。

以下链接包含解析https://parse.com/docs/osx/api/Constants/PFErrorCode.html

中的所有错误代码