2017-12-05 4 views
1

Ich versuche, ein CKQuerySubscription auf die öffentlich zugängliche Datenbank zu speichern - ein CKError mit den folgenden Informationen zurückgegeben:Wolkenjunge „Abonnement ist Duplikat“ Fehler - get subscriptionId

[ 
    "ServerErrorDescription": subscription is duplicate of 'C82E82EF-F373-4D75-A465-65364D8FEB12', 
    "CKErrorDescription": Error saving record subscription with id E30DB4D5-2617-4E0D-8CFE-A14538140029 to server: subscription is duplicate of 'C82E82EF-F373-4D75-A465-65364D8FEB12', 
    "NSDebugDescription": CKInternalErrorDomain: 2032, 
    "NSUnderlyingError": <CKError 0x1c064ec70: "Server Rejected Request" (2032); server message = "subscription is duplicate of 'C82E82EF-F373-4D75-A465-65364D8FEB12'"; uuid = A5290A31-650C-44FC-B1C1-7BCB181291F8; container ID = "iCloud.com.mycompany.myapp">, 
    "NSLocalizedDescription": Error saving record subscription with id E30DB4D5-2617-4E0D-8CFE-A14538140029 to server: subscription is duplicate of 'C82E82EF-F373-4D75-A465-65364D8FEB12', "errorKey": ck1uc5yob, 
    "RequestUUID": A5290A31-650C-44FC-B1C1-7BCB181291F8, 
    "ContainerID": iCloud.com.mycompany.myapp 
] 

Die Eigenschaften ancestorRecord, clientRecord und serverRecord auf dem CKError Objekt sind alle nil.

Wie kann ich die ID der Abfrage erhalten, die auf dem Server von diesem Fehler (dh C82E82EF-F373-4D75-A465-65364D8FEB12) existiert. Gibt es eine Eigenschaft, die ich vermisse?

Antwort

1

Es gibt ein paar Optionen. Ich neige dazu, fetchAllSubscriptionsWithCompletion Handler zu verwenden, um alle Abonnements zu ziehen und dann die, die analysieren mich interessiert, wie so:

[publicDatabase fetchAllSubscriptionsWithCompletionHandler:^(NSArray<CKSubscription *> * _Nullable subscriptions, NSError * _Nullable error) 
{ 
    for (CKQuerySubscription *sub in subscriptions) 
    { 
     NSString *predString = [NSString stringWithFormat:@"%@", sub.predicate]; 
    } 
}]; 

Sie können aber auch CKFetchSubscriptionsOperation verwenden, um alle U-Boote zu ziehen, oder spezielle U-Boote auf der Grundlage der Abonnement-ID . In diesem Fall würden Sie den Vorgang erstellen, die gewünschte Abonnement-ID konfigurieren, Ihren Nachbearbeitungscode zum Abschlussblock hinzufügen und dann den Vorgang ausführen.

+0

Ja, ich bin mit der Konfiguration der Abonnement-ID für den Moment gegangen, aber für meinen Fall ist es keine Idee Lösung .. –

Verwandte Themen