Swift 怎么说;当计数达到此数值时,执行此函数";?
在重新加载表之前,我想知道在后台保存的所有任务都已保存完毕。我有5个不同的Swift 怎么说;当计数达到此数值时,执行此函数";?,swift,parse-platform,Swift,Parse Platform,在重新加载表之前,我想知道在后台保存的所有任务都已保存完毕。我有5个不同的saveInBackground函数,在我创建新的PFQuery之前必须完成这些函数。我现在的想法是: object.saveInBackgroundWithBlock({ (Success: true, error) -> Void in count ++ }) 然后,一旦计数达到某个数字,就执行查询。我不想使用if,因为如果网络处理保存请求的时间太长。一段时
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个位置。我同意它并不十分优雅,但在我看来,它击败了一个可能无限期运行的循环。