Bonjour, j'ai besoin d'aide pour faire une propriété paresseuse.
J'ai ce code: p> et lorsque vous l'utilisez dans Je reçois cette erreur texte (date, formateur .DateFormat) code> p>
Impossible d'utiliser un getter mutation sur une valeur immuable: 'Self' est immuable code> p> p> P> P> P> P>
3 Réponses :
Vous ne pouvez pas utiliser comme alternatif que vous pouvez déplacer paresseux code> dans la vue SWIFTUI, si vous le souhaitez dans ce cas spécifique peut être utilisé statique, comme dans l'exemple ci-dessous
paresseux varformat code> dans la classe de modèle d'affichage connexe et utilisez-le à partir de l'instance correspondante. p> p>
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)") } }
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.
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 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: P>
Vous pouvez voir que le paramètre local correct est utilisé pour rendre la chaîne de date. P> DateNformatter code> Fonction d'instance
SetLocalizedDateFormatFromtemplate (_ dateformatTemplate: chaîne) code>. P>.
Vous le déclarez comme let, utilisez var.
Peut faire @state pazy var dateformat .....?