Ich habe gerade angefangen, einige Operation Subclass 'zu implementieren, die einige async Arbeit wie das Herunterladen für mich handhaben. Ich bin neugierig auf Best Practice für die Verwaltung der Warteschlange, insbesondere um sicherzustellen, dass ich nicht die gleiche Aufgabe zweimal hinzufügen.Verfolgungsoperationen in der Betriebswarteschlange
Gibt es eine Methode, bei der ich die Operation mit einem Namen zur Warteschlange hinzufügen kann oder ein Wörterbuch erstellt und verwaltet? Angenommen, wenn Elemente zur Warteschlange hinzugefügt werden, fügen Sie einen Eintrag zum Wörterbuch hinzu und wenn sie fertig sind, entfernen Sie den Eintrag aus dem Wörterbuch? Conditional Check vorab durchführen?
Dies könnte ziemlich leicht erreicht werden, da es einen Benachrichtigungsblock innerhalb der Operationsunterklasse gibt. Es scheint nur ein bisschen hacky.
Danke für den Rat.
---- ---- EDIT
versucht Also das mit anderweitig Schleife (cellForItemAt) Aktivitätsindikator zu zeigen, wenn das Element in der Warteschlange ist, aber es scheint nur das erste Element der Warteschlange werden überprüft und Rückkehr, dass aber keine anderen, auch wenn es mehrere Operationen in der Warteschlange mit eindeutigen Namen sind:
for operation in downloadQueue.operations {
if operation.name == self.multiPartArray[collectionView.tag][indexPath.item].name { innerCell.contentView.addSubview(self.activityIndicatorView) self.activityIndicatorView.centerXAnchor.constraint(equalTo: innerCell.contentView.centerXAnchor).isActive = true self.activityIndicatorView.centerYAnchor.constraint(equalTo: innerCell.contentView.centerYAnchor).isActive = true
self.activityIndicatorView.isHidden = false
self.activityIndicatorView.startAnimating()
innerCell.contentView.bringSubview(toFront: self.activityIndicatorView)
break
} else {
print("Operation not in queue")
}
}
scheint das gleiche tun, wenn Operationen in die Warteschlange hinzufügen. Es prüft die erste Operation. Wenn! = OpName, wird die Operation hinzugefügt, auch wenn opName in der Warteschlange vorhanden ist, aber nicht das erste Element.
können Sie dafür verwenden. – vaibby