0Pricing
Swift Academy · Leçon

Créer un property wrapper personnalisé

Implémenter @propertyWrapper avec wrappedValue pour encapsuler une logique.

Créer un property wrapper personnalisé est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Bienvenue

Les enveloppes de propriétés encapsulent la logique de stockage des propriétés, ce qui permet de réutiliser du code répétitif pour la validation, la transformation ou la persistance.

Syntaxe de 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 ```

L'obligation liée à wrappedValue

Toute enveloppe de propriété doit définir `wrappedValue`. C'est la valeur que l'utilisateur de l'enveloppe lit et modifie.

Enveloppes de propriétés génériques

```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 } } ```

Utiliser l'enveloppe

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

Arguments personnalisés de l'initialiseur

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

Enveloppe sur une propriété stockée ou calculée

Les enveloppes de propriétés ajoutent un stockage masqué (_wrappedValue). La propriété annotée est du sucre syntaxique : ```swift @Clamped var level = 50 // Desugars to: var _level = Clamped(wrappedValue: 50) var level: Int { get { _level.wrappedValue } set { _level.wrappedValue = newValue } } ```

Enveloppe 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 ```

Enveloppe sûre vis-à-vis des accès concurrents

```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 } } ```

Combiner des enveloppes dans un type

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

Vérification rapide

Quelle est la propriété obligatoire dans chaque type `@propertyWrapper` ?

Récapitulatif

Points essentiels : • `@propertyWrapper` + `wrappedValue` = enveloppe de propriété minimale • L'enveloppe ajoute un stockage `_name` masqué • Les enveloppes génériques fonctionnent avec tout type T • Usages courants : bornage, journalisation, UserDefaults, sécurité des accès concurrents • Des arguments d'initialisation personnalisés permettent la configuration Ensuite : les valeurs projetées.

Questions Fréquemment Posées

La leçon « Créer un property wrapper personnalisé » est-elle gratuite ?

Oui — le texte complet de « Créer un property wrapper personnalisé » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Créer un property wrapper personnalisé » ?

Implémenter @propertyWrapper avec wrappedValue pour encapsuler une logique. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Créer un property wrapper personnalisé » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Créer un property wrapper personnalisé
  2. Valeurs projetées avec $binding
  3. @Published et observation dans Combine
  4. Composer plusieurs property wrappers
← Retour à Swift Academy