Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从共享数据库订阅更改?_Ios_Swift_Cloudkit - Fatal编程技术网

Ios 如何从共享数据库订阅更改?

Ios 如何从共享数据库订阅更改?,ios,swift,cloudkit,Ios,Swift,Cloudkit,创建订阅时: let options: CKSubscriptionOptions = [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion] let subscription = CKDatabaseSubscription(recordType: "Territory", predicate: NSPredicate(value: true), options: options) 并将其保存到我的共享数据

创建订阅时:

let options: CKSubscriptionOptions = [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion]
let subscription = CKDatabaseSubscription(recordType: "Territory", predicate: NSPredicate(value: true), options: options)
并将其保存到我的共享数据库:

sharedDatabase?.save(subscription) { _, _ in }
它仍然没有出现在我的cloudkit仪表板中。为什么?

而对于专用数据库,则显示

注册后,我需要知道更改了哪些记录以及更改的类型。

您必须创建一个自定义区域,使用
CKDatabaseSubscription

请注意,共享数据库中不支持CKQuerySubscription 数据库和CKDatabaseSubscription当前仅跟踪更改 来自专用和共享数据库中的自定义区域

更多信息请访问您必须创建一个自定义区域,使用
CKDatabaseSubscription

请注意,共享数据库中不支持CKQuerySubscription 数据库和CKDatabaseSubscription当前仅跟踪更改 来自专用和共享数据库中的自定义区域


更多信息请访问

不知道如果你知道这一点,已经一年了,但是:

func subscribeToSharedDBForRecordType(recordType:String){

        let newSubscription = CKDatabaseSubscription()
        newSubscription.recordType = recordType

        let info = CKSubscription.NotificationInfo()
        info.soundName = "default"
        info.alertBody = "Something changed the record!"
        newSubscription.notificationInfo = info

        CKContainer.default().sharedCloudDatabase.save(newSubscription) { [weak self] savedSubscription, error in

            guard let savedSubscription = savedSubscription, error == nil else {
                print("error saving subscription:\(String(describing: error))")
                return
            }

            UserDefaults.standard.set(newSubscription.subscriptionID, forKey: "someUniqueKey")
        }

    }

将为您订阅共享数据库中给定记录类型的所有更改。接下来要做的事情是查看区域通知,以确定哪个区域受到影响。我不是为了我的项目才这么做的,所以我不知道怎么做

不知道如果你知道这一点,已经一年了,但是:

func subscribeToSharedDBForRecordType(recordType:String){

        let newSubscription = CKDatabaseSubscription()
        newSubscription.recordType = recordType

        let info = CKSubscription.NotificationInfo()
        info.soundName = "default"
        info.alertBody = "Something changed the record!"
        newSubscription.notificationInfo = info

        CKContainer.default().sharedCloudDatabase.save(newSubscription) { [weak self] savedSubscription, error in

            guard let savedSubscription = savedSubscription, error == nil else {
                print("error saving subscription:\(String(describing: error))")
                return
            }

            UserDefaults.standard.set(newSubscription.subscriptionID, forKey: "someUniqueKey")
        }

    }

将为您订阅共享数据库中给定记录类型的所有更改。接下来要做的事情是查看区域通知,以确定哪个区域受到影响。我不是为了我的项目才这么做的,所以我不知道怎么做

是的,它是有效的。。。但情况是,当我收到关于共享数据库更改的通知时,我也会收到CKDatabaseNotification,我无法访问CKRecors。此通知与是相关,它有效。。。但情况是,当我收到有关共享数据库更改的通知时,我也会收到CKDatabaseNotification,并且我无法访问与此通知相关的CKRecors