2017-12-05 11 views
1

を取得し、私は公共のデータベースにCKQuerySubscriptionを保存しようとしている - CKErrorは、次の情報が返されます。CloudKitエラー「のサブスクリプションが重複しているの」 - 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 
] 

性質ancestorRecordclientRecordserverRecordCKErrorオブジェクトのすべてがnilです。

このエラー(例:C82E82EF-F373-4D75-A465-65364D8FEB12)からサーバーに存在するクエリのIDを取得するにはどうすればよいですか。私はそれが欠けている財産はありますか?

答えて

1

いくつかのオプションがあります。私は、すべてのサブスクリプションを引っ張ってfetchAllSubscriptionsWithCompletionハンドラを使用する傾向があるし、私が興味を持ってるものを解析し、そのよう:

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

しかし、あなたはまた、サブスクリプションIDに基づいて、すべての潜水艦、または特定の潜水艦を引っ張ってCKFetchSubscriptionsOperationを使用することができます。この場合、操作を作成し、興味のあるサブスクリプションIDを設定し、完了ブロックに後処理コードを追加してから、操作を実行します。

+0

ええ、私は今、サブスクリプションIDを設定していますが、私の場合、それはアイデア解決策ではありません.. –

関連する問題