有没有理由使用saveInBackground
代替saveEventually
?两者都有可用的回调。性能或功能有什么不同吗?它们是完全相同的功能,但saveEventually
有网络检查吗?
我的理解是它们是相同的,因为它们在文档中进行了比较,但文档没有明确说明。 saveInBackground
被推送到比saveEventually
更高优先级的线程,或者线程是否相同?
更新:
由于存在性能上的差异,正如下面的MikeG所说,我做了一个简单的后备保存方法,以防万一。我现在在任何地方都使用它来运行正常的保存操作。我saveInBackground
然后回退到saveEventually
:
func saveInBackgroundIfNotSuccessSaveEventually(object: PFObject, completion: (() -> ())?) {
object.saveInBackgroundWithBlock({ (success, error) -> Void in
if !success {
object.saveEventually({ (success, error) -> Void in
if success {
completion?()
}
if error != nil {
NSLog(error!.localizedDescription)
}
})
} else if success {
completion?()
}
if error != nil {
NSLog(error!.localizedDescription)
}
})
}
答案 0 :(得分:3)
saveInBackground
将在应用运行时保存在后台。
saveEventually
会将您的对象添加到缓存中,以便在您的应用运行时保存到Parse。或者不是。
如果没有可用的网络:
saveInBackground
会在您的应用播放时重试X次
跑步,最终会失败。 saveEventually
都会继续尝试。来源:
答案 1 :(得分:1)
这两个功能是不同的。 //Signing Considerations
//You should sign all of your apps with the same certificate throughout the expected lifespan of your applications.
异步执行保存。这意味着它调用save函数,然后立即返回调用线程,以便可以继续执行功能,而无需等待save函数完成并返回。我一直在我的应用程序中使用saveInBackground
,并且已完成数百次测试,只要有互联网连接,此功能将在3秒内完成,通常在1秒内完成。当没有可用的互联网连接时,此功能的行为方式我不确定,但如果您不确定连接是否可用,但需要进行保存,请使用saveInBackground
。
saveEventually()
将在未来某个未指定的时间执行保存。即使互联网连接不可用,它也会等到连接可用,然后执行保存。我相信,虽然我不是肯定的,但是这个函数被调度到具有服务质量saveEventually
的队列,因此它不是一个高优先级的任务,它可以被推迟,直到资源在某个未指定的时间可用在将来。如果连接长时间不可用,这可能需要几秒到几分钟甚至几个小时。
编辑:忘了直接回答这个问题,“是否存在性能差异......”。答案是肯定的!