---
title: "assign(to:on:)"
framework: combine
role: symbol
role_heading: Instance Method
path: "combine/publisher/assign(to:on:)"
---

# assign(to:on:)

Assigns each element from a publisher to a property on an object.

## Declaration

```swift
func assign<Root>(to keyPath: ReferenceWritableKeyPath<Root, Self.Output>, on object: Root) -> AnyCancellable
```

## Parameters

- `keyPath`: A key path that indicates the property to assign. See https://developer.apple.com/library/archive/documentation/Swift/Conceptual/Swift_Programming_Language/Expressions.html#//apple_ref/doc/uid/TP40014097-CH32-ID563 in The Swift Programming Language to learn how to use key paths to specify a property of an object.
- `object`: The object that contains the property. The subscriber assigns the object’s property every time it receives a new value.

## Mentioned in

Receiving and Handling Events with Combine Processing Published Elements with Subscribers Replacing Foundation Timers with Timer Publishers

## Return Value

Return Value An AnyCancellable instance. Call cancel() on this instance when you no longer want the publisher to automatically assign the property. Deinitializing this instance will also cancel automatic assignment.

## Discussion

Discussion Use the assign(to:on:) subscriber when you want to set a given property each time a publisher produces a value. In this example, the assign(to:on:) sets the value of the anInt property on an instance of MyClass: class MyClass {     var anInt: Int = 0 {         didSet {             print("anInt was set to: \(anInt)", terminator: "; ")         }     } }

var myObject = MyClass() let myRange = (0...2) cancellable = myRange.publisher     .assign(to: \.anInt, on: myObject)

// Prints: "anInt was set to: 0; anInt was set to: 1; anInt was set to: 2" important: The Subscribers.Assign instance created by this operator maintains a strong reference to object, and sets it to nil when the upstream publisher completes (either normally or with an error).

## See Also

### Connecting simple subscribers

- [assign(to:)](combine/publisher/assign(to:).md)
- [sink(receiveCompletion:receiveValue:)](combine/publisher/sink(receivecompletion:receivevalue:).md)
- [sink(receiveValue:)](combine/publisher/sink(receivevalue:).md)
