在专用数据库中为自定义区域创建订阅失败

我成功在私有数据库中创建了一个自定义区域,然后尝试为该自定义区域创建订阅,但是订阅创建失败并显示以下错误:“错误,指示某些项目失败,但操作总体成功。” >

ios文档建议使用CKRecordZonesubscription创建区域订阅。但是我仍然会出错。我该如何解决?

var ContactZonePrivateDb: CKRecordZone  = CKRecordZone(zoneName: Cloud.PrivateZone.Contact.ZoneName)


func createCustomContactInfoZone (completion: @escaping (Error?) -> Void){

    let status = UserDefaults.standard.bool(forKey: Cloud.PrivateDB.CustomZoneCreated)

    if status == true {
        return
    }

    let createZoneGroup = DispatchGroup()
    createZoneGroup.enter()

    let createZoneOperation = CKModifyRecordZonesOperation(recordZonesToSave: [ContactZonePrivateDb],recordZoneIDsToDelete: [] )

        createZoneOperation.modifyRecordZonesCompletionBlock = { (saved,deleted,error) in
            if error != nil  {
                if let ckerror = error as? CKError {
                    self.aErrorHandler.handleCkError(ckerror: ckerror)
                }
                completion(error)
            }
            UserDefaults.standard.set(true,forKey: Cloud.PrivateDB.CustomZoneCreated)
            self.subscribePrivateZoneContact()
            completion(nil)
        }
    createZoneGroup.leave()

    createZoneOperation.qualityOfService = .userInitiated
    self.privateDB?.add(createZoneOperation)
} 

func subscribePrivateZoneContact() {
    let status = UserDefaults.standard.bool(forKey: Cloud.PrivateZone.Contact.SubscriptionID)
    if (status == true) {
        return
    }
    let subscriptionZone = CKRecordZonesubscription(zoneID: ContactZonePrivateDb.zoneID)
    let operation = CKModifySubscriptionsOperation(subscriptionsToSave: [subscriptionZone],subscriptionIDsToDelete: nil)

    operation.modifySubscriptionsCompletionBlock = { saved,error in
        guard error == nil else {
            if let ckerror = error as? CKError {
                self.aErrorHandler.handleCkError(ckerror: ckerror)

            }
            return
        }
        UserDefaults.standard.set(true,forKey:  Cloud.PrivateZone.Contact.SubscriptionID)
        DispatchQueue.main.async {
            print("Successfully added Private zone subscription.\(self.ContactZonePrivateDb.zoneID)")
        }

    }
    operation.qualityOfService = .userInitiated
    self.privateDB?.add(operation)
}
luzz111 回答:在专用数据库中为自定义区域创建订阅失败

发现,为了在自定义区域上创建预订,您必须首先在自定义区域中创建一条记录。但是其他订阅则不是这样。想知道为什么吗?

,

如果您在CloudKit仪表板中删除了订阅,然后运行了一次订阅创建代码,它仍然显示错误吗?

我问的原因是因为我相信如果您尝试使用相同的名称重新创建订阅,将会看到该错误。可以这样做,并且可以忽略该错误。

本文链接:https://www.f2er.com/3043382.html

大家都在问