0
votes

Propriété paresseuse à Swiftui

Bonjour, j'ai besoin d'aide pour faire une propriété paresseuse.

J'ai ce code: xxx

et lorsque vous l'utilisez dans texte (date, formateur .DateFormat)

Je reçois cette erreur Impossible d'utiliser un getter mutation sur une valeur immuable: 'Self' est immuable


2 commentaires

Vous le déclarez comme let, utilisez var.


Peut faire @state pazy var dateformat .....?


3 Réponses :


0
votes

Vous ne pouvez pas utiliser paresseux dans la vue SWIFTUI, si vous le souhaitez dans ce cas spécifique peut être utilisé statique, comme dans l'exemple ci-dessous xxx

comme alternatif que vous pouvez déplacer paresseux varformat dans la classe de modèle d'affichage connexe et utilisez-le à partir de l'instance correspondante.


0 commentaires

1
votes

Vous pouvez utiliser statique au lieu de paresseux.

struct Formatter: View {

    var date = Date()

    private static var dateFormat: DateFormatter = {
        let formatter = DateFormatter()
        formatter.locale = NSLocale.current
        formatter.dateFormat = "dd/MM/YYYY hh:mm"
        return formatter
    }()

    var body: some View {
        Text("\(date, formatter: Self.dateFormat)")
    }
}


1 commentaires

Pour tous ceux qui lisent ceci. Veuillez utiliser des formateurs tels que ceci: formatter.setlocalizedDateFormatFromTemplate ("jj / mm / yyyy hh: mm") Vous obtiendrez également la bonne orientation des composants de la date gratuitement.



0
votes

Les réponses sur l'utilisation d'un formateur de date à Swiftui n'ont pas tort, mais aucun d'entre eux ne gère correctement le format de date localisé. Si vous n'utilisez aucun des formats de date prédéfinis, vous devez utiliser le DateNformatter Fonction d'instance SetLocalizedDateFormatFromtemplate (_ dateformatTemplate: chaîne) . .

Cela vous permet de passer au format que vous souhaitez - appliquer intelligemment les versions localisées correctes de ce format: vous pouvez l'essayer dans un terrain de jeu rapide:

 Entrez la description de l'image ici

Vous pouvez voir que le paramètre local correct est utilisé pour rendre la chaîne de date.


0 commentaires