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