<!--
{
  "availability" : [
    "iOS: 15.4.0 -",
    "iPadOS: 15.4.0 -",
    "macCatalyst: 15.4.0 -",
    "macOS: 13.0.0 -",
    "visionOS: -",
    "watchOS: 8.5.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "HealthKit",
  "identifier" : "/documentation/HealthKit/HKSamplePredicate",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "HealthKit"
    ],
    "preciseIdentifier" : "s:9HealthKit17HKSamplePredicateV"
  },
  "title" : "HKSamplePredicate"
}
-->

# HKSamplePredicate

A predicate for queries that return a collection of matching sample objects.

```
struct HKSamplePredicate<Sample> where Sample : HKSample
```

## Overview

The [`HKSamplePredicate`](/documentation/HealthKit/HKSamplePredicate) structure bundles an [`HKSampleType`](/documentation/HealthKit/HKSampleType) and an optional <doc://com.apple.documentation/documentation/Foundation/NSPredicate>. The structure is generic. You can create it for any [`HKSampleType`](/documentation/HealthKit/HKSampleType) subclass, and it automatically sets the `Sample` type to the matching [`HKSampleType`](/documentation/HealthKit/HKSampleType) subtype. As a result, any query that you build using this structure returns properly typed results.

To create an [`HKSamplePredicate`](/documentation/HealthKit/HKSamplePredicate) instance, call one of its constructor methods.

```swift
let stepType = HKQuantityType(.stepCount)
let predicate = HKSamplePredicate.quantitySample(type: stepType)

let descriptor = HKSampleQueryDescriptor(
    predicates:[predicate],
    sortDescriptors: [],
    limit: 10)

// The results are an array of HKQuantitySample objects.
let results = try await descriptor.result(for: store)
```

## Topics

### Creating Sample Predicates

[`audiogram(_:)`](/documentation/HealthKit/HKSamplePredicate/audiogram(_:))

Returns a sample predicate that matches audiogram samples.

[`categorySample(type:predicate:)`](/documentation/HealthKit/HKSamplePredicate/categorySample(type:predicate:))

Returns a sample predicate that matches category samples.

[`clinicalRecord(type:predicate:)`](/documentation/HealthKit/HKSamplePredicate/clinicalRecord(type:predicate:))

Returns a sample predicate that matches clinical record samples.

[`correlation(type:predicate:)`](/documentation/HealthKit/HKSamplePredicate/correlation(type:predicate:))

Returns a sample predicate that matches samples that contain correlated data.

[`electrocardiogram(_:)`](/documentation/HealthKit/HKSamplePredicate/electrocardiogram(_:))

Returns a sample predicate that matches electrocardiogram samples.

[`heartbeatSeries(_:)`](/documentation/HealthKit/HKSamplePredicate/heartbeatSeries(_:))

Returns a sample predicate that matches heartbeat series samples.

[`quantitySample(type:predicate:)`](/documentation/HealthKit/HKSamplePredicate/quantitySample(type:predicate:))

Returns a sample predicate that matches quantity samples.

[`sample(type:predicate:)`](/documentation/HealthKit/HKSamplePredicate/sample(type:predicate:))

Returns a sample predicate that matches samples.

[`visionPrescription(_:)`](/documentation/HealthKit/HKSamplePredicate/visionPrescription(_:))

Returns a predicate that matches prescription samples.

[`workout(_:)`](/documentation/HealthKit/HKSamplePredicate/workout(_:))

Returns a sample predicate that matches workout samples.

[`workoutRoute(_:)`](/documentation/HealthKit/HKSamplePredicate/workoutRoute(_:))

Returns a sample predicate that matches samples containing workout route data.

### Accessing Sample Predicate Data

[`nsPredicate`](/documentation/HealthKit/HKSamplePredicate/nsPredicate)

An optional predicate that further restricts the results that the query returns.

[`sampleType`](/documentation/HealthKit/HKSamplePredicate/sampleType)

The type of samples that the query returns.



---

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)