2017-02-06 3 views
5

So in IOS 9 war es möglich, dies zu tun:Geben CKDatabaseSubscription des Prädikats und Optionen

let subscription = CKQuerySubscription(recordType: "SomeType", predicate: somePredicate, subscriptionID: someSubscriptionID, options: [.firesOnRecordCreation, .firesOnRecordDeletion]) 
    subscription.notificationInfo = ... 
    publicDatabase.save(subscription) { (savedSubscription, error) in } 

jedoch jetzt mit Swift 3 hat CKQuerySubscription veraltet und CKDatabaseSubscription für eine gemeinsame Datenbank empfohlen. Ich habe den folgenden Code:

let subscription = CKDatabaseSubscription(subscriptionID: someSubscriptionID) 
    subscription.recordType = "SomeType" 
    publicDatabase.save(subscription) { (savedSubscription, error) in } 

Das Problem ist, dass ich sehe nicht, wie man das Prädikat angeben kann und die Abonnement-Optionen mit dieser Methode. Jemand bitte helfen.

+0

['CKQuerySubscription'] (https://developer.apple.com/reference/cloudkit/ckquerysubscription) ist ** noch nicht veraltet. ** Sie können es weiterhin verwenden. –

+0

Mein schlechtes ich meinte CKSubscription. Und auch CKQuerySubscription erlaubt keine freigegebenen Datenbanken. –

+1

Wie ich es sehe, können Sie, wenn Sie Besitzer sind, immer noch 'CKQuerySubscription' in Ihrer privaten Datenbank ausführen. Aber für den Teilnehmer müssen Sie "CKDatabaseSubscription" verwenden, und es hat kein Prädikat (noch?). – paiv

Antwort

2

CKQuerySubscription ist nicht veraltet 100%. Der Bereich wurde jedoch geändert.

Für die Standardzone der öffentlichen Datenbank & Private Datenbank Standardzone verwenden Sie CKQuerySubscription zum Abrufen der Benachrichtigung.

Es gibt einen 2-Schritt-Prozess für die freigegebene Datenbank & Private Datenbank Benutzerdefinierte Zone.

Schritt 1: CKDatabaseSubscription zu privat & freigegebene Datenbank.

ersten Schritt erhalten Sie Zone hinzufügen, Zone Update oder Zone löschen Benachrichtigungen an private & freigegebene Datenbank.

Schritt 2: Holen Sie alle benutzerdefinierten Zonen aus der freigegebenen Datenbank & Private Datenbank. Und erstellen Sie CKRecordZoneSubscription für jede Zone.

Hinweis: CKQuerySubscription funktioniert nicht für die gemeinsam genutzte Datenbank, aber es funktioniert für die benutzerdefinierte Zone der privaten Datenbank, in der Sie die Prädikats-Benachrichtigungsoptionen & hinzufügen können.

Weil wir CKDatabaseSubscription in Schritt 1 erstellt haben. Wenn Zonen hinzugefügt oder geändert oder gelöscht werden, während benutzerdefinierte Zonen von Private & Shared Database abgerufen werden. Sie werden benachrichtigt.

Wenn der Benachrichtigungstyp ".database" lautet, werden alle Zonen aus der freigegebenen oder privaten Datenbank basierend auf der Abonnement-ID abgerufen.

Wenn der Benachrichtigungstyp .recordZone lautet, werden die Zonen-ID und die Datensatzänderungen mit dem zuvor gespeicherten Server-Änderungstoken abgerufen.

Verwandte Themen