0Pricing
Swift Academy · Lezione

Creare un property wrapper personalizzato

Implementare @propertyWrapper con wrappedValue per incapsulare la logica.

Creare un property wrapper personalizzato è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 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 property wrapper incapsulano la logica di gestione della memoria delle proprietà, consentendo di riutilizzare codice ripetitivo per attività come la convalida, la trasformazione o la persistenza.

Sintassi di base

```swift @propertyWrapper struct Clamped { var wrappedValue: Int { didSet { wrappedValue = min(max(0,wrappedValue),100) } } init(wrappedValue: Int) { self.wrappedValue = min(max(0,wrappedValue),100) } } struct Gauge { @Clamped var level = 50 } var g = Gauge() g.level = 150 // clamped to 100 ```

Il requisito wrappedValue

Ogni property wrapper deve definire `wrappedValue`. È ciò che l'utilizzatore del wrapper legge e modifica.

Property wrapper generici

```swift @propertyWrapper struct Logged { private var value: T var wrappedValue: T { get { print("get"); return value } set { print("set to \(newValue)"); value = newValue } } init(wrappedValue: T) { value = wrappedValue } } ```

Utilizzare il wrapper

```swift struct Model { @Logged var name: String = "Default" } var m = Model() let n = m.name // prints "get" m.name = "Alice" // prints "set to Alice" ```

Argomenti personalizzati dell'inizializzatore

```swift @propertyWrapper struct Default { var wrappedValue: T init(wrappedValue: T) { self.wrappedValue = wrappedValue } init(_ default: T) { wrappedValue = default } } @Default(42) var count: Int ```

Wrapper su una proprietà memorizzata o calcolata

I property wrapper aggiungono una memoria nascosta (`_wrappedValue`). La proprietà annotata è zucchero sintattico: ```swift @Clamped var level = 50 // Desugars to: var _level = Clamped(wrappedValue: 50) var level: Int { get { _level.wrappedValue } set { _level.wrappedValue = newValue } } ```

Wrapper UserDefaults

```swift @propertyWrapper struct UserDefault { let key: String; let defaultValue: T var wrappedValue: T { get { UserDefaults.standard.object(forKey: key) as? T ?? defaultValue } set { UserDefaults.standard.set(newValue, forKey: key) } } } @UserDefault(key:"theme",defaultValue:"light") var theme: String ```

Wrapper thread-safe

```swift @propertyWrapper final class Atomic { private var value: T; private let lock = NSLock() var wrappedValue: T { get { lock.lock(); defer { lock.unlock() }; return value } set { lock.lock(); defer { lock.unlock() }; value = newValue } } init(wrappedValue: T) { value = wrappedValue } } ```

Combinare wrapper in un tipo

```swift struct Settings { @Clamped var volume = 50 @UserDefault(key:"username",defaultValue:"") var username: String @Logged var debugMode = false } ```

Verifica rapida

Qual è la proprietà obbligatoria in ogni tipo `@propertyWrapper`?

Riepilogo

Concetti chiave: • `@propertyWrapper` + `wrappedValue` = property wrapper minimo • Il wrapper aggiunge la memoria nascosta `_name` • I wrapper generici funzionano con qualsiasi tipo T • Usi comuni: limitazione dei valori, logging, UserDefaults, sicurezza dei thread • Gli argomenti personalizzati dell'inizializzatore consentono la configurazione Prossimo argomento: valori proiettati.

Domande Frequenti

La lezione «Creare un property wrapper personalizzato» è gratuita?

Sì — il testo completo di «Creare un property wrapper personalizzato» è 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 «Creare un property wrapper personalizzato»?

Implementare @propertyWrapper con wrappedValue per incapsulare la logica. 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 1 di 4.

Quanto tempo richiede la lezione «Creare un property wrapper personalizzato»?

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