如何解决如何在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)
要保存和删除核心数据记录,您可以使用recordName
获取CKRecord
ID,该ID更易于保存在核心数据中:
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时为其指定一个ID,这样便可以知道subscriptionID
是什么:
let subscriptionWorkspace = CKQuerySubscription(
recordType: "YourRecordType",predicate: ...,subscriptionID: "Your-ID-Goes-Here",options: [...]
)
如果您要创建单个CKRecord
的订阅,则可以创建一个subscriptionID
,例如:
"YourRecordType|\(recordName)"
不过,与同时订阅一个记录相比,使用predicate
条件订阅整个记录类型通常是更好的方法。
如果您需要进一步的帮助,请添加有关创建CKQuerySubscription
的详细信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。