2017-07-29 2 views
1

Ich verwende das CloudKit in meiner App. Um alle Änderungen von der iCloud abzurufen, verwende ich die Operation CKFetchRecordZoneChangesOperation. Wenn ich diese Operation hinzufüge, während ich keine aktive Internetverbindung habe, wird fetchRecordZoneChangesCompletionBlock nie aufgerufen.IOS: fetchRecordZoneChangesCompletionBlock nicht aufgerufen, wenn keine Internetverbindung besteht

Ich erwarte, dass dieser Abschlussblock mit einem Fehler CKError.networkUnavailable aufgerufen wird.

Ich bin mit schnellen 3.

ich wahrscheinlich einige Dinge falsch verstehen. Kann mir jemand erklären, was ich vermisse?

Antwort

1

CKOperation Documentation

CKOperation Objekte haben eine Standardqualität Service-Level von NSQualityOfServiceUtility. Operationen auf diesem Niveau werden als Ermessensspielraum betrachtet und vom System für eine optimale Zeit basierend auf dem Batteriestand und anderen Faktoren geplant. Unter iPhone werden diskretionäre Aktivitäten angehalten, wenn der Energiesparmodus aktiviert ist.

Was Sie brauchen, manuell zu tun, ist Ihre CKFetchRecordZoneChangesOperation ‚s QoS .userInitiated

// userInitiated: Used for performing work that has been explicitly requested by the user, 
// and for which results must be immediately presented in order to allow for further user interaction. 
// For example, loading an email after a user has selected it in a message list. 
// 
// set to userInitiated make sure the completion with error will immediately returned if currently no internet connection 
zoneOperation.qualityOfService = .userInitiated 
+0

Dank gesetzt! Das hat mein Problem gelöst. – Leontien

Verwandte Themen