configuredWith(configuration:group:body:)
Applies a temporary configuration to the container within the scope of a closure.
Declaration
@discardableResult func configuredWith<R>(configuration: CKOperation.Configuration? = nil, group: CKOperationGroup? = nil, body: (CKContainer) throws -> R) rethrows -> RParameters
- configuration:
An interim configuration to apply to the current container.
- group:
The group to associate with the methods you execute in the closure. Specifying a group helps the system prioritize those method calls, and helps you identify the calls in the server logs in CloudKit Console. For more information, see Ckoperationgroup.
- body:
The closure to execute with the temporarily configured container.
Discussion
Use this method to apply a specific configuration to the current container that lasts only for the duration of the trailing closure. For example, you might want to temporarily elevate the quality of service (QoS) for a group of method calls, or allow one or more expensive method calls to execute only while the device is using WiFi.
func fetchShareParticipants(
with phoneNumbers: [String],
completionHandler: @escaping (
Result<[String : Result<CKShare.Participant, any Error>], any Error>
) -> Void
) {
// Get a reference to the app's container.
let container = CKContainer.default()
// Create a configuration that denies cellular access.
let config = CKOperation.Configuration()
config.allowsCellularAccess = false
// Configure the container and execute an expensive fetch.
container.configuredWith(configuration: config) { container in
container.fetchShareParticipants(forPhoneNumbers: phoneNumbers, completionHandler: completionHandler)
}
}