<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftUI",
  "identifier" : "/documentation/SwiftUI/ObservedObject/projectedValue",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Property",
  "symbol" : {
    "kind" : "Instance Property",
    "modules" : [
      "SwiftUI"
    ],
    "preciseIdentifier" : "s:7SwiftUI14ObservedObjectV14projectedValueAC7WrapperVyx_Gvp"
  },
  "title" : "projectedValue"
}
-->

# projectedValue

A projection of the observed object that creates bindings to its
properties.

```
@MainActor @preconcurrency var projectedValue: ObservedObject<ObjectType>.Wrapper { get }
```

## Discussion

Use the projected value to get a [`Binding`](/documentation/SwiftUI/Binding) to a property of an
observed object. To access the projected value, prefix the property
variable with a dollar sign (`$`). For example, you can get a binding
to a model’s `isEnabled` Boolean so that a [`Toggle`](/documentation/SwiftUI/Toggle) can control its
value:

```
struct MySubView: View {
    @ObservedObject var model: DataModel

    var body: some View {
        Toggle("Enabled", isOn: $model.isEnabled)
    }
}
```

> Important: A `Binding` created by the projected value must only be
> read from, or written to by the main actor. Failing to do so may result
> in undefined behavior, or data loss. When this occurs, SwiftUI will
> issue a runtime warning. In a future release, a crash will occur
> instead.

---

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)