---
title: "init(recordType:predicate:subscriptionID:options:)"
framework: cloudkit
role: symbol
role_heading: Initializer
path: "cloudkit/ckquerysubscription/init(recordtype:predicate:subscriptionid:options:)"
---

# init(recordType:predicate:subscriptionID:options:)

Creates a named query-based subscription that queries records of a specific type.

## Declaration

```swift
convenience init(recordType: CKRecord.RecordType, predicate: NSPredicate, subscriptionID: CKSubscription.ID, options querySubscriptionOptions: CKQuerySubscription.Options = [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion])
```

## Parameters

- `recordType`: The record’s type. You’re responsible for defining your app’s record types.
- `predicate`: The predicate that identifies the records for inclusion in the subscription. For information about the operators that predicates support, see the discussion in doc://com.apple.cloudkit/documentation/CloudKit/CKQuery.
- `subscriptionID`: The subscription’s name. You must specify a value that is unique in the target database, you should not specify an empty string.
- `querySubscriptionOptions`: A bitmask of configuration options. See doc://com.apple.cloudkit/documentation/CloudKit/CKQuerySubscription/Options for more information.

## Discussion

Discussion The subscription that this method returns is a query-based subscription with a scope that includes all of the user’s record zones. When CloudKit modifies a record that matches the specified type and predicate, it uses querySubscriptionOptions to determine whether to send a push notification.

## See Also

### Creating a Subscription

- [init(coder:)](cloudkit/ckquerysubscription/init(coder:).md)
