<!--
{
  "availability" : [
    "iOS: 9.0.0 -",
    "iPadOS: 9.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "HealthKit",
  "identifier" : "/documentation/HealthKit/HKCategorySample/init(type:value:start:end:device:metadata:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "HealthKit"
    ],
    "preciseIdentifier" : "c:objc(cs)HKCategorySample(cm)categorySampleWithType:value:startDate:endDate:device:metadata:"
  },
  "title" : "init(type:value:start:end:device:metadata:)"
}
-->

# init(type:value:start:end:device:metadata:)

Creates a newly instantiated category sample including the provided device and metadata.

```
convenience init(type: HKCategoryType, value: Int, start startDate: Date, end endDate: Date, device: HKDevice?, metadata: [String : Any]?)
```

## Parameters

`type`

The category type for this sample. For a complete list, see [`HKCategoryTypeIdentifier`](/documentation/HealthKit/HKCategoryTypeIdentifier).

`value`

The value for this sample. This value must come from the appropriate category value enumeration. Each category type uses its own enumeration. For more information, see Category Type Identifiers in <doc://com.apple.healthkit/documentation/HealthKit/healthkit-constants>.

`startDate`

The start date for the sample. This must be equal to or earlier than the end date; otherwise, this method throws an exception (`NSInvalidArgumentException`).

`endDate`

The end date for the sample. This must be equal to or later than the start date; otherwise, this method throws an exception (`NSInvalidArgumentException`).

`device`

An [`HKDevice`](/documentation/HealthKit/HKDevice) object representing the device that generated the data for this sample.

`metadata`

The metadata dictionary contains extra information describing this sample. The dictionary’s keys are all <doc://com.apple.documentation/documentation/Foundation/NSString> objects. The values may be <doc://com.apple.documentation/documentation/Foundation/NSString> objects, <doc://com.apple.documentation/documentation/Foundation/NSNumber> objects or <doc://com.apple.documentation/documentation/Foundation/NSDate> objects. For a complete list of predefined metadata keys, see <doc://com.apple.healthkit/documentation/HealthKit/metadata-keys>.

    Using predefined keys helps facilitate sharing data between apps; however, you are also encouraged to create your own, custom keys as needed to extend the HealthKit category sample’s capabilities.

## Discussion

HealthKit uses category samples to represent data that can be classified into a finite set of categories. To create a category sample, you must first create the corresponding category type, and then set its start date, end dates, device, and metadata. This produces a new category sample with both a device and metadata information, as shown below.

```swift
let device = HKDevice(name: deviceName,
                      manufacturer: manufacturerName,
                      model: modelName,
                      hardwareVersion: hardwareVersionNumber,
                      firmwareVersion: firmwareVersionNumber,
                      softwareVersion: softwareVersionNumber,
                      localIdentifier: localIdentifier,
                      UDIDeviceIdentifier: deviceIdentifier)
 
let metadata : [String : AnyObject] =
    [HKMetadataKeyDigitalSignature:digitalSignature,
     HKMetadataKeyTimeZone:timeZone]
 
guard let categoryType =
    HKObjectType.categoryTypeForIdentifier(HKCategoryTypeIdentifierSleepAnalysis) else {
        fatalError("*** Unable to create a sleep analysis category type ***")
}
 
let categorySample = HKCategorySample(type: categoryType,
                                      value: HKCategoryValueSleepAnalysis.Asleep.rawValue,
                                      startDate: start,
                                      endDate: end,
                                      device: device,
                                      metadata:metadata)
```

## See Also

[`value`](/documentation/HealthKit/HKCategorySample/value)

The category value for this sample.

[`+  categoryTypeForIdentifier:`](/documentation/HealthKit/HKObjectType/categoryType(forIdentifier:))

Returns the shared category type for the provided identifier.

[`endDate`](/documentation/HealthKit/HKSample/endDate)

The sample’s end date.

[`categoryType`](/documentation/HealthKit/HKCategorySample/categoryType)

The category type for this sample.

[`startDate`](/documentation/HealthKit/HKSample/startDate)

The sample’s start date.



---

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)