Заметьте, что удаление CKRecord через CKSubscription не работает

CKSubscription Док говорит:Когда изменение записи вызывает срабатывание подписки, сервер отправляет push-уведомления всем устройствам с этой подпиской.за исключением того, который сделал первоначальное изменение к записи.

Предположим, у меня есть два устройства:device 1 а такжеdevice 2 авторизовался с разных аккаунтов iCloud. Предположим, что оба устройства подписаны на удаление записи для определенного типа записи.

Еслиdevice 1 создает запись, а затемdevice 1 удаляет его тогдаdevice 2 получить уведомление - ЭТО СОГЛАСНО ДОКУМЕНТУ, НО ..Еслиdevice 1 создает запись, а затемdevice 2 удаляет его тогдаdevice 2 получать уведомления - я не думаю, что это в соответствии с DOC, и это не имеет никакого смысла,device 2 удалил это такdevice 1 должны быть уведомлены

НАСТРОЙКА ПОДПИСКИ НА УСТРОЙСТВО 1 И УСТРОЙСТВО 2

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Alert, categories: nil))
    application.registerForRemoteNotifications()

    let defaultContainer = CKContainer.defaultContainer()
    let publicDatabase = defaultContainer.publicCloudDatabase

    publicDatabase.fetchAllSubscriptionsWithCompletionHandler({subscriptions, error in

        if error == nil {

            if subscriptions.count == 0 {

                let subscription = CKSubscription(recordType: "OU", predicate: NSPredicate(value: true), options: .FiresOnRecordDeletion)
                subscription.notificationInfo = CKNotificationInfo()
                subscription.notificationInfo.shouldBadge = false
                subscription.notificationInfo.alertBody = "OU removed or upated"
                publicDatabase.saveSubscription(subscription, completionHandler: {subscription, error in
                    if error == nil {
                    } else {
                        println("\(error.localizedDescription)")
                    }
                })
            }

        } else {
            println("\(error.localizedDescription)")
        }
    })


    return true
}

СОЗДАТЬ ЗАПИСЬ на УСТРОЙСТВО 1

@IBAction func addOU(sender: AnyObject) {

    var defaultContainer = CKContainer.defaultContainer()
    var publicDatabase = defaultContainer.publicCloudDatabase

    let r = CKRecord(recordType: "OU", recordID: CKRecordID(recordName: "aaaa"))
    publicDatabase.saveRecord(r, completionHandler: { r2, error in

        if error == nil {
        } else {
            println("\(error.localizedDescription)")
        }
    })
}

УДАЛИТЬ ЗАПИСЬ НА УСТРОЙСТВЕ 2

@IBAction func removeOU(sender: AnyObject) {

    var defaultContainer = CKContainer.defaultContainer()
    var publicDatabase = defaultContainer.publicCloudDatabase

    publicDatabase.deleteRecordWithID(CKRecordID(recordName: "aaaa"), completionHandler: {recordID, error in

        if error == nil {

        } else {
            println("\(error.localizedDescription)")
        }
    })
}

Ответы на вопрос(1)

Ваш ответ на вопрос