[英]How to delete a subscription in CloudKit
我想刪除一個特定的訂閱,但我不確定如何獲取訂閱 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)
保存和刪除Core Data記錄,可以使用recordName
來獲取CKRecord
ID,在Core Data中更容易保存:
let recordID = CKRecord.ID(recordName: recordName)
訂閱是否有類似的東西,或者我是否必須在創建它時保存訂閱 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)
}])
你是如何創建CKQuerySubscription
開始的? 您在創建它時為其指定一個 ID,這就是您知道subscriptionID
ID 是什么的方式:
let subscriptionWorkspace = CKQuerySubscription(
recordType: "YourRecordType",
predicate: ...,
subscriptionID: "Your-ID-Goes-Here",
options: [...]
)
如果您要創建對單個CKRecord
的訂閱,那么您可以創建一個subscriptionID
如:
"YourRecordType|\(recordName)"
但是,通常有比一次訂閱一個記錄更好的方式來訂閱帶有predicate
條件的整個記錄類型。
如果您需要進一步的幫助,請添加有關創建CKQuerySubscription
的更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.