我想删除特定的订阅,但我不确定如何获得订阅ID。有几个选项可以删除订阅,所有这些都要求预先知道订阅ID:
示例:
let database = CKContainer.default().publicCloudDatabase
database.delete(withSubscriptionID: subscription.subscriptionID) { (result, error) in
// completed
}示例:
let database = CKContainer.default().publicCloudDatabase
database.fetchAllSubscriptions { subscriptions, error in
if error == nil {
if let subscriptions = subscriptions {
// find the subscription ID of my choice and use the method from #1 to delete
}
} else {
print(error!.localizedDescription)
}
}示例:
let operation = CKModifySubscriptionsOperation(subscriptionsToSave: [], subscriptionIDsToDelete: [subscriptionID])
operation.modifySubscriptionsCompletionBlock = {
(modifiedSubscriptions: [CKSubscription]?, deletedSubscriptionIDs: [String]?, error: Error?) -> Void in
if error != nil {
print(error!.localizedDescription)
} else {
print("Success!")
}
}
operation.qualityOfService = .utility
privateDatabase.add(operation)为了保存和删除核心数据记录,可以使用recordName获取CKRecord ID,这在CKRecord数据中更容易保存:
let recordID = CKRecord.ID(recordName: recordName)对于订阅是否存在类似的内容,还是在创建订阅ID时必须保存订阅ID?看起来CKQuerySubscription连recordName都没有
[<CKQuerySubscription: 0x283a3be40; ; Query Subscription: recordType=Progress, predicate=userId == "_sdfd1cedfea6965asdfdsc58e3d", subscriptionOptions=1, subscriptionID=SDF23BB6B-2C15-4F4D-BE7F-DF234GS, zoneID=(null)>
{
alertBody -> New Post!
alertLocalizationKey -> "(null)
alertLocalizationArgs -> []
title -> My App
titleLocalizationKey -> "(null)
titleLocalizationArgs -> []
subtitle -> (null)
subtitleLocalizationKey -> "(null)
subtitleLocalizationArgs -> []
alertActionLocalizationKey -> (null)
alertLaunchImage -> (null)
soundName -> default
desiredKeys -> []
shouldBadge -> NO
shouldSendContentAvailable -> NO
shouldSendMutableContent -> NO
category -> (null)
collapseIDKey -> (null)
}])发布于 2020-09-24 19:21:34
首先,如何创建CKQuerySubscription?在创建它时为它指定一个ID,这就是您知道subscriptionID是什么的方式:
let subscriptionWorkspace = CKQuerySubscription(
recordType: "YourRecordType",
predicate: ...,
subscriptionID: "Your-ID-Goes-Here",
options: [...]
)如果要创建单个CKRecord的订阅,则可以创建如下所示的subscriptionID:
"YourRecordType|\(recordName)"但是,通常有更好的方法使用predicate条件订阅整个记录类型,而不是一次订阅记录。
如果您需要进一步的帮助,请添加有关创建您的CKQuerySubscription的更多细节。
https://stackoverflow.com/questions/64036094
复制相似问题