gpt4 book ai didi

ios - 似乎无法删除 CloudKit 中的订阅? `-deleteSubscriptionWithID` 总是返回真

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:20:59 31 4
gpt4 key购买 nike

我希望那里有一位经验丰富的 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:

我在该消息中传递了 subscriptionID,如下所示:

[publicDatabase deleteSubscriptionWithID:[[NSUserDefaults standardUserDefaults] objectForKey:@"SUBSCRIPTION"] completionHandler:^(NSString * _Nullable subscriptionID, NSError * _Nullable error) {
if( error ) {
NSLog(@"ERROR: %@", [error description] );
}
else
{
NSLog(@"SUCCESS: %@", subscriptionID);
}
}];

但它不会删除我的订阅: enter image description here

无论我传递什么作为 subscriptionID,都没有错误,我在“删除”时看到“成功”。

enter image description here enter image description here

……是的。显然,这是行不通的。

如果我通过 Cloudkit 仪表板手动删除订阅,我的 -fetch 调用会正确注意到并返回一个空数组: enter image description here

所以在这一点上,我确定我在代码中错误地删除了订阅,或者订阅已损坏并且(不太可能)没有人在 SO 或我能找到的任何其他论坛上提问?

我也尝试过使用 CKModifySubscriptionsOperation

   CKModifySubscriptionsOperation *deleteSub = [[CKModifySubscriptionsOperation alloc] initWithSubscriptionsToSave:nil subscriptionIDsToDelete:@[[[NSUserDefaults standardUserDefaults] objectForKey:@"SUBSCRIPTION"]]];
[publicDatabase addOperation:deleteSub];

没有结果:(

最佳答案

我使用 database.deleteSubscriptionWithID 函数删除订阅。

如果您想确保 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

关于ios - 似乎无法删除 CloudKit 中的订阅? `-deleteSubscriptionWithID` 总是返回真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618349/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com