Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 怎么说;当计数达到此数值时,执行此函数";?_Swift_Parse Platform - Fatal编程技术网

Swift 怎么说;当计数达到此数值时,执行此函数";?

Swift 怎么说;当计数达到此数值时,执行此函数";?,swift,parse-platform,Swift,Parse Platform,在重新加载表之前,我想知道在后台保存的所有任务都已保存完毕。我有5个不同的saveInBackground函数,在我创建新的PFQuery之前必须完成这些函数。我现在的想法是: object.saveInBackgroundWithBlock({ (Success: true, error) -> Void in count ++ }) 然后,一旦计数达到某个数字,就执行查询。我不想使用if,因为如果网络处理保存请求的时间太长。一段时

在重新加载表之前,我想知道在后台保存的所有任务都已保存完毕。我有5个不同的
saveInBackground
函数,在我创建新的
PFQuery
之前必须完成这些函数。我现在的想法是:

object.saveInBackgroundWithBlock({ (Success: true, error) -> Void in

             count ++

            })
然后,一旦计数达到某个数字,就执行查询。我不想使用
if
,因为如果网络处理保存请求的时间太长。一段时间的陈述有效吗?例如:

            while count < 0 {

                continue
            } else if count == 5 {

                self.fetchSecondaryObjects()

            }
而计数<0{
持续
}如果计数=5,则为else{
self.fetchSecondaryObjects()
}

理想情况下,我会使用一个实时数据引擎来驱动我的应用程序,但我很难找到一个我只能用Swift编写的应用程序。如果存在这种情况,并且您知道,我很想知道它。

只要在每次递增时进行检查即可。它的开销非常低,只有五个比较

object.saveInBackgroundWithBlock({ (Success: true, error) -> Void in
  count ++;
  if count == 5 {
    self.fetchSecondaryObjects()
  }
})

除非我遗漏了一些你不能这么做的原因,否则这似乎是最简单的解决方案。总比运行无限循环好。

一般来说,在这种情况下,我尽量不使用while,因为如果你的逻辑有问题,你很容易陷入其中。你为什么不用这样的东西:

if count >= xyz 

你的回答肯定有用。然而,我不确定这是否是最好的方法。你说得对,开销很低。但考虑到我无法确定哪个保存将首先完成,我必须在每个块中放入
if语句。因此,它将迭代5次。实际上,并不是说这有很大的区别,在调用查询之前,我需要8个
saveinbackgroundithblock
函数来完成。也许你可以让这五个
saveInBackground
函数中的每一个调用一个
increment()
函数,该函数既执行递增操作,又执行检查操作?这样,它只在代码中的一个位置,而不是5个位置。我同意它并不十分优雅,但在我看来,它击败了一个可能无限期运行的循环。