【问题标题】:Parse checkIfCommandIsRunning Pausing App解析 checkIfCommandIsRunning 暂停应用
【发布时间】:2015-02-23 15:56:45
【问题描述】:

由于我无法解决的原因,这只是突然发生的事情。启动我的 iOS 应用后,应用会在断点处暂停,方法如下:

[PFQuery checkIfCommandIsRunning]

我相信这是一个私有的 Parse 方法。如果我关闭断点,这不是问题,但这里显然有些奇怪。我有一个断点来触发所有异常。在这种情况下,这就是暂停应用程序的原因。

编辑

这是我的代码中断点停止的方法。这在线程队列中checkIfCommandIsRunning 之前的 3 个方法中列出。

//get objects we want to delete
    [deleteQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
    {
        if (!error)
        {
            //create array of ids from delete list
            NSMutableArray *deletedObjectIds = [NSMutableArray new];
            for (PFObject *obj in objects) [deletedObjectIds addObject:obj.objectId];

            //update main query to not include these objects
            [_query whereKey:@"objectId" notContainedIn:deletedObjectIds];
        }
    }];

我在这段代码中所做的很简单。我有一个PFQuery,它使用我标记为要删除的特定pinName 获取所有对象。它停在的确切行是:

[_query whereKey:@"objectId" notContainedIn:deletedObjectIds];

还有线索吗?

【问题讨论】:

  • 你为什么叫它?
  • 我不是,但这是断点停止的方法。正如我所提到的,我认为它是一个私有的 Parse 方法,因此很难弄清楚它的任何含义。
  • 当问题发生时,你能发布我们在哪里执行你的代码吗?具体来说,到目前为止,已对 parse sdk 进行了哪些调用。
  • 我已经用更多信息更新了这个问题。不确定它是否可悲地不再发光。看看你的想法。
  • 通过创建一个新的 PFQuery 并在其上调用 whereKey: notContainedIn: 而不是 _query(可能是一个 ivar)来证明它不是您之前使用 _query 所做的事情。预测:这会很好,这将暗示_query 的历史。我会要求您发布有关它的所有内容,当您到达失败的行时,我们会发现它已经在执行。

标签: ios objective-c parse-platform pfquery


【解决方案1】:

你是对的 PFQuery.checkIfCommandIsRunning 是一种私有方法,可确保 PFQuery 不会在 PFObject 上执行多次。

它抛出的错误是:

此查询具有未完成的网络连接。你得等一等 直到完成。

确保您一次不会多次调用查询

  • 添加Bool 变量isQueryExecuting 作为执行查询的条件,并在启动查询时将其设置为true,在查询完成时将其设置为false
  • 在串行队列中执行查询以确保仅在所有先前的查询完成后才执行查询 (FIFO)。在此处考虑性能影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多