0Pricing
Swift Academy · Lezione

Valori proiettati con $binding

Esporre un projectedValue per fornire funzionalità aggiuntive tramite il prefisso $.

Valori proiettati con $binding è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Benvenuto

I valori proiettati, accessibili tramite `$`, forniscono ai property wrapper un'interfaccia secondaria: SwiftUI li utilizza con `@State` e `@Published` per esporre `Binding` e `Publisher`.

Aggiungere projectedValue

```swift @propertyWrapper struct Toggle { var wrappedValue: Bool = false var projectedValue: String { wrappedValue ? "ON" : "OFF" } } struct Model { @Toggle var active } var m = Model() print(m.$active) // "OFF" — projected value accessed with $ ```

Tipo di projectedValue

Il valore proiettato può essere di qualsiasi tipo: un `Binding`, un `Publisher`, una `String` o un tipo personalizzato. `@State` di SwiftUI proietta un `Binding` che consente un flusso di dati bidirezionale.

Esempio di proiezione Binding

```swift // @State projects Binding: @State var isOn = false Toggle(isOn: $isOn) // $isOn is Binding ```

Proiezione Binding personalizzata

```swift @propertyWrapper struct Validated { var wrappedValue: String var projectedValue: Bool { !wrappedValue.isEmpty } } struct Form { @Validated var email = "" } var f = Form() f.email = "hi@example.com" print(f.$email) // true — projected Bool ```

Proiezione di @Published

```swift class VM: ObservableObject { @Published var score = 0 } let vm = VM() let cancellable = vm.$score // Publisher .sink { print("Score: \($0)") } vm.score = 10 // "Score: 10" ```

Accedere a projectedValue all'interno del wrapper

```swift @propertyWrapper struct History { private var current: T private(set) var projectedValue: [T] = [] var wrappedValue: T { get { current } set { projectedValue.append(current); current = newValue } } init(wrappedValue: T) { current = wrappedValue } } ```

Utilizzare il wrapper History

```swift struct Counter { @History var count = 0 } var c = Counter() c.count = 1; c.count = 5; c.count = 3 print(c.$count) // [0,1,5] — history of old values ```

Distinguere la sintassi $

```swift struct Form { @State var text = "" var body: some View { TextField("Enter", text: $text) // $text is Binding } } // text → String (wrappedValue) // $text → Binding (projectedValue) ```

Considerazioni progettuali

• `projectedValue` è facoltativo: aggiungerlo solo quando è necessaria un'interfaccia secondaria • Il tipo può essere completamente diverso da `wrappedValue` • Utilizzare `$` nel punto della chiamata per accedere al valore proiettato • I valori proiettati sono ideali per i publisher di Combine e i binding di SwiftUI

Verifica rapida

Come si accede al `projectedValue` di un property wrapper?

Riepilogo

Concetti chiave: • `projectedValue` fornisce ai wrapper un'API secondaria tramite `$` • Può essere di qualsiasi tipo: Binding, Publisher, Bool, Array • `@State` proietta `Binding`; `@Published` proietta `Publisher` • Accedere con `$propertyName` sia nel corpo sia nel punto della chiamata • Aggiungerlo solo quando una seconda interfaccia offre un valore concreto Prossimo argomento: @Published e Combine.

Domande Frequenti

La lezione «Valori proiettati con $binding» è gratuita?

Sì — il testo completo di «Valori proiettati con $binding» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Valori proiettati con $binding»?

Esporre un projectedValue per fornire funzionalità aggiuntive tramite il prefisso $. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Valori proiettati con $binding»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Creare un property wrapper personalizzato
  2. Valori proiettati con $binding
  3. @Published e osservazione in Combine
  4. Comporre più property wrapper
← Torna a Swift Academy