0
我試圖讓網絡操作的串行隊列GCD是這樣的:如何使一個串行隊列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的信息?
那麼這是否意味着偏移0實際上意味着沒有偏移,因此最高優先級,這相當於UI修改的主隊列? – Manuel
@Manuel是的,你可以假設0的偏移等同於主隊列(雖然文檔從未明確地說過),所以你應該使用小於這個值的值。 – Hamish
你是一個天才 – Manuel