[英]Seems impossible to delete a subscription in CloudKit? `-deleteSubscriptionWithID` always returns true
我希望有一位经验丰富的CloudKit大师,但根据我的谷歌搜索查询,我不确定你是否存在。 我认为这可能是Apple的一个错误,但我无法确定:
我可以保存订阅我的CKDatabase
,没有任何问题。
[publicDatabase saveSubscription:subscription completionHandler:^(CKSubscription *subscription, NSError *error) {
if (error)
{
//No big deal, don't do anything.
}
else
{
[[NSUserDefaults standardUserDefaults] setObject:[subscription subscriptionID] forKey:@"SUBSCRIPTION"];
}
}];
每当我更改记录中的字段时,我都会收到推送通知,一切都很愉快。
我的问题是删除此订阅。
我试过调用-deleteSubscriptionWithID:completionHandler:
正如您在上面的代码片段中看到的,我保存了订阅ID(还通过调用-fetchAllSubscriptionsWithCompletionHandler:
确认它是正确的订阅ID -fetchAllSubscriptionsWithCompletionHandler:
我在那条消息中传递了subscriptionID,如下所示:
[publicDatabase deleteSubscriptionWithID:[[NSUserDefaults standardUserDefaults] objectForKey:@"SUBSCRIPTION"] completionHandler:^(NSString * _Nullable subscriptionID, NSError * _Nullable error) {
if( error ) {
NSLog(@"ERROR: %@", [error description] );
}
else
{
NSLog(@"SUCCESS: %@", subscriptionID);
}
}];
无论我作为subscriptionID传递什么,都没有错误,我在“删除”时看到“SUCCESS”。
...是的。 显然这是行不通的。
如果我通过Cloudkit Dashboard手动删除订阅,我的-fetch
调用会正确地注意到并返回一个空数组:
所以在这一点上,我确定我要么在代码中错误地删除订阅,要么它已经坏了,并且(不太可能)没有人在SO或任何其他论坛上发现我可以找到它?
我也尝试过使用CKModifySubscriptionsOperation
CKModifySubscriptionsOperation *deleteSub = [[CKModifySubscriptionsOperation alloc] initWithSubscriptionsToSave:nil subscriptionIDsToDelete:@[[[NSUserDefaults standardUserDefaults] objectForKey:@"SUBSCRIPTION"]]];
[publicDatabase addOperation:deleteSub];
没有结果 :(
我使用database.deleteSubscriptionWithID函数删除订阅。
如果你想确保ID是正确的,你也可以先使用database.fetchAllSubscriptionsWithCompletionHandler({subscriptions, error in
获取所有ID database.fetchAllSubscriptionsWithCompletionHandler({subscriptions, error in
然后在完成处理程序中使用以下命令检查它是否是有效订阅: if let subscription: CKSubscription = subscriptionObject
然后使用以下命令删除一个或多个: database.deleteSubscriptionWithID(subscription.subscriptionID, completionHandler: {subscriptionId, error in
在这里你可以看到我删除所有订阅的代码: https : //github.com/evermeer/EVCloudKitDao/blob/1bfa936cb46c5a2ca75f080d90a3c02e925b7e56/AppMessage/AppMessage/CloudKit/EVCloudKitDao.swift#L897-897
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.