<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macCatalyst: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: -",
    "watchOS: 8.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CloudKit",
  "identifier" : "/documentation/CloudKit/CKFetchSubscriptionsOperation/perSubscriptionResultBlock",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "CloudKit"
    ],
    "preciseIdentifier" : "s:So29CKFetchSubscriptionsOperationC8CloudKitE26perSubscriptionResultBlockySS_s0H0OySo14CKSubscriptionCs5Error_pGtcSgvp"
  },
  "title" : "perSubscriptionResultBlock"
}
-->

# perSubscriptionResultBlock

The closure to execute when a subscription becomes available.

```
var perSubscriptionResultBlock: ((CKSubscription.ID, Result<CKSubscription, any Error>) -> Void)? { get set }
```

## Discussion

This property is a closure that returns no value and has the following parameters:

- The ID of the subscription.
- A <doc://com.apple.documentation/documentation/Swift/Result> that contains either a retrieved subscription, or an error that describes why CloudKit can’t retrieve the subscription.

The fetch operation executes this closure once for each subscription ID in the [`subscriptionIDs`](/documentation/CloudKit/CKFetchSubscriptionsOperation/subscriptionIDs-17f4q) property. Each time the closure executes, it executes serially with respect to the other closures of the operation.

If you intend to use this closure to process results, set it before you execute the operation or submit the operation to a queue.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)