ios - 我如何删除 Objective-c 中的 cksubscription?

标签 ios objective-c cloudkit cksubscription

很抱歉,我找不到通俗易懂的英语答案,或者至少我看到的每个答案都假设我拥有一定数量的知识,而这些知识是我不应该拥有的。我只需要删除一个 CKSubscription。我该怎么做呢?非常感谢所有提示和帮助。

最佳答案

假设您没有要删除的订阅的订阅ID,您应该首先获取所有订阅并找出要删除的订阅的订阅ID:

[[[CKContainer defaultContainer] publicCloudDatabase] fetchAllSubscriptionsWithCompletionHandler:^(NSArray<CKSubscription *> * _Nullable subscriptions, NSError * _Nullable error) {
    if (!error) {
        //do your logic to find out which subscription you want to delete, and get it's subscriptionID
    } else {
        //handle error
    }
}];

然后,现在您已经有了 subscriptionID,只需将其删除即可:

CKModifySubscriptionsOperation *operation = [[CKModifySubscriptionsOperation alloc] initWithSubscriptionsToSave:nil subscriptionIDsToDelete:YOUR_SUBSCRIPTION_ID];

operation.modifySubscriptionsCompletionBlock = ^(NSArray <CKSubscription *> * __nullable savedSubscriptions, NSArray <NSString *> * __nullable deletedSubscriptionIDs, NSError * __nullable operationError) {
    //handle the results when the operation has completed
};

[[[CKContainer defaultContainer] publicCloudDatabase] addOperation:operation];

不要忘记始终正确处理所有可能的错误。

关于ios - 我如何删除 Objective-c 中的 cksubscription?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635492/

相关文章:

ios - UIImage 上的模糊选择/魔术棒

objective-c - 带有 NSButton 子类的 NSShadow

iOS 钥匙串(keychain)包装器类错误

swift - 未调用 CKQueryOperation 上的 recordFetchedBlock

ios - 使用 CloudKit 保持 NSArray 的顺序

ios - 如何使用 NSPredicate 和 CloudKit 获取特定用户的最新帖子?

iOS/Xcode : Suppress NSLog Statements for Release in 2018

ios - 我的构建卡在处理中,我无法选择它在 testflight 中进行测试

iOS - 在编码中而不是在 XIB 或 Storyboard 中的 UI 设计是否可行?

ios - 如何通过存储 "reply" block 在 iOS 应用程序和 WatchKit 扩展之间进行通信?