---
title: "init(type:value:start:end:device:metadata:)"
framework: healthkit
role: symbol
role_heading: Initializer
path: "healthkit/hkcategorysample/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.

## Declaration

```swift
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 doc://com.apple.healthkit/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 doc://com.apple.healthkit/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

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.

## See Also

### Related Documentation

- [value](healthkit/hkcategorysample/value.md)
- [categoryType(forIdentifier:)](healthkit/hkobjecttype/categorytype(foridentifier:).md)
- [endDate](healthkit/hksample/enddate.md)
- [categoryType](healthkit/hkcategorysample/categorytype.md)
- [startDate](healthkit/hksample/startdate.md)

### Creating Category Samples

- [init(type:value:start:end:)](healthkit/hkcategorysample/init(type:value:start:end:).md)
- [init(type:value:start:end:metadata:)](healthkit/hkcategorysample/init(type:value:start:end:metadata:).md)
