【发布时间】:2016-06-04 11:07:11
【问题描述】:
我尝试使用 GCD 为网络操作创建一个串行队列,如下所示:
let mySerialQueue = dispatch_queue_create("com.myApp.mySerialQueue", dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, 0))
func myFunc() {
dispatch_async(mySerialQueue) {
do {
// Get object from the database if it exists
let query = PFQuery(className: aClass)
query.whereKey(user, equalTo: currentUser)
let result = try? query.getFirstObject()
// Use existing object or create a new one
let object = result ?? PFObject(className: aClass)
object.setObject(currentUser, forKey: user)
try object.save()
} catch {
print(error)
}
}
}
代码首先在数据库中查找现有对象。 如果它找到一个,它会更新它。如果它没有找到一个,它会创建一个新的。这是使用 Parse SDK 并且仅使用同步网络函数(.getFirstObject、.save)。
由于某种原因,这似乎不是连续执行的,因为有时会将一个新对象写入数据库,尽管已经存在一个应该只更新的对象。
我是否遗漏了有关 GCD 的某些内容?
【问题讨论】:
标签: swift parse-platform grand-central-dispatch