Utilisation de Slice et OptionalSlice

August 26, 2025 · View on GitHub

Slice et OptionalSlice sont des composants de la bibliothèque AppState qui vous permettent d'accéder à des parties spécifiques de l'état de votre application. Ils sont utiles lorsque vous devez manipuler ou observer une partie d'une structure d'état plus complexe.

Vue d'ensemble

  • Slice : Vous permet d'accéder et de modifier une partie spécifique d'un objet State existant.
  • OptionalSlice : Fonctionne de la même manière que Slice mais est conçu pour gérer les valeurs optionnelles, par exemple lorsqu'une partie de votre état peut être nil ou non.

Fonctionnalités Clés

  • Accès Sélectif à l'État : N'accédez qu'à la partie de l'état dont vous avez besoin.
  • Sécurité des Threads : Tout comme les autres types de gestion d'état dans AppState, Slice et OptionalSlice sont thread-safe.
  • Réactivité : Les vues SwiftUI se mettent à jour lorsque la tranche de l'état change, garantissant que votre interface utilisateur reste réactive.

Exemple d'Utilisation

Utilisation de Slice

Dans cet exemple, nous utilisons Slice pour accéder et mettre à jour une partie spécifique de l'état — dans ce cas, le username d'un objet User plus complexe stocké dans l'état de l'application.

import AppState
import SwiftUI

struct User {
    var username: String
    var email: String
}

extension Application {
    var user: State<User> {
        state(initial: User(username: "Guest", email: "guest@example.com"))
    }
}

struct SlicingView: View {
    @Slice(\.user, \.username) var username: String

    var body: some View {
        VStack {
            Text("Nom d'utilisateur : \(username)")
            Button("Mettre à jour le nom d'utilisateur") {
                username = "NewUsername"
            }
        }
    }
}

Utilisation d'OptionalSlice

OptionalSlice est utile lorsqu'une partie de votre état peut être nil. Dans cet exemple, l'objet User lui-même peut être nil, nous utilisons donc OptionalSlice pour gérer ce cas en toute sécurité.

import AppState
import SwiftUI

extension Application {
    var user: State<User?> {
        state(initial: nil)
    }
}

struct OptionalSlicingView: View {
    @OptionalSlice(\.user, \.username) var username: String?

    var body: some View {
        VStack {
            if let username = username {
                Text("Nom d'utilisateur : \(username)")
            } else {
                Text("Aucun nom d'utilisateur disponible")
            }
            Button("Définir le nom d'utilisateur") {
                username = "UpdatedUsername"
            }
        }
    }
}

Meilleures Pratiques

  • Utilisez Slice pour un état non optionnel : Si votre état est garanti comme non optionnel, utilisez Slice pour y accéder et le mettre à jour.
  • Utilisez OptionalSlice pour un état optionnel : Si votre état ou une partie de l'état est optionnel, utilisez OptionalSlice pour gérer les cas où la valeur peut être nil.
  • Sécurité des Threads : Tout comme State, Slice et OptionalSlice sont thread-safe et conçus pour fonctionner avec le modèle de concurrence de Swift.

Conclusion

Slice et OptionalSlice offrent des moyens puissants d'accéder et de modifier des parties spécifiques de votre état de manière thread-safe. En tirant parti de ces composants, vous pouvez simplifier la gestion de l'état dans des applications plus complexes, en veillant à ce que votre interface utilisateur reste réactive et à jour.


Cette traduction a été générée automatiquement et peut contenir des erreurs. Si vous êtes un locuteur natif, nous vous serions reconnaissants de contribuer avec des corrections via une Pull Request.