2017-12-05 3 views
1

나는 공공 데이터베이스에 CKQuerySubscription을 저장하기 위해 노력하고있어 수 :CloudKit "구독의 중복"오류 - <code>CKError</code>은 다음 정보를 반환 - 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 
] 

속성 ancestorRecord, clientRecordserverRecordCKError 개체의 경우 모두 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를 구성했는데 내 경우에는 아이디어 솔루션이 아닙니다 .. –