Creer une application uniquement pour IOS 14

Bonjour,

Je suis les différents tutoriels pour apprendre à coder en Swift avec l’api SwiftUI.
j’ai commencé à écrire les scripts sous Xcode 11.5. je viens d’installer Xcode 12 beta.
je me retrouve avec un problème. J’ai souhaité mettre @AppStorage qui n’est valide que sous IOS 14.
je dois changer mon script en y ajoutant @available ( iOS 14.0, *) sur chaque structures qui utilisent la variable stockée en dur.
Dans les tutoriels, Maxime n’a pas besoin de mettre cette annotation.
cf : https://www.purplegiraffe.fr/courses/1065367/lectures/22791162
Y a t-il moyen de modifier la configuration du programme pour ne plus à spécifier l’annotation @available ?
cordialement,

Fabrice

Hello @lecha,

Si ton projet supporte iOS 13 ou moins, tu ne vas pas avoir le choix, il faudra mettre cette annotation.

Bonne journée,

Alexandre

1 « J'aime »

Laisse tomber le @AppStorage, si tu veux une application tournant sur iOS 13 et iOS 14. De toute manière, c’est juste un « facilitateur » greffé par dessus le fichier UserDefaults. Le mécanisme de persistance des données codé pour iOS 13 tournera aussi sur iOS 14, donc pas la peine de perdre du temps dessus.

Bah oui, mais les tutoriels de Maxime sont écrits pour iOS 14 et Xcode 12 !

Je crois que je me suis trompé, en lisant trop vite. Tu ne veux pas faire une application hybride iOS 13/iOS 14, mais uniquement iOS 14, non ?

Dans ce cas, pas besoin d’ajouter un @available, ça marche tout seul. Je viens d’essayer.

Tu n’aurais pas repris un projet tapé sur Xcode 11.5 pour iOS 13 ? Vérifie si la target de compilation n’est pas resté sur iOS 13.

Fait un petit test avec une mini-application tapée avec Xcode 12, sans reprendre un projet précédent.

Rien ne t’empêche, sur les versions antérieures, d’utiliser UserDefaults dans sa forme ancienne
exemple :
if (@available iOS 14.0, *){
// with @Appstorage
}
else{
UserDefaults.standard.set(myName, forKey: « myName »)
UserDefaults.standard.synchronize()
pour écrire ton nom dans la rubrique « myName »
}
avec:
myName = UserDefaults.standard.value(forKey: « myName ») as String
pour la récupérer. Je n’ai pas cherché à bien utiliser les optionnels, mais là, il faut les utiliser car rien ne prouve qu’il y aura une valeur pour cette rubrique, cette clé.

Hello,

Je te conseil fortement d’aller visionner le cours sur les property wrapper. Tu pourra faire ton propre @Storage qui fonctionnera sur IOS 13 et 14.

1 « J'aime »

bonjour,
Merci pour toutes ces réponse,
Pour draken :

En fait, c’est tout a fait le cas. je ne sais pas comment trouver cette « Target de compilation », j’ai eu beau cherché dans les options de Xcode, mais je n’arrive pas à trouver comment changer cette option.

Pour fJacquemin,
Merci pour l’exemple que tu m’as donné, je vais tester ce code et ensuite regarder le cours que Samir m’a conseillé.

Pour Samir,
Merci pour le conseil, je vais regarder de ce pas le cours qui concerne les property wrapper cela me permettra d’apprendre comment faire pour le rendre compatible avec IOS 13.

Hello,
ça y est j’ai trouvé le Target de compilation. J’avais oublié l’un des contenus des tous premiers cours de Maxime…

2 « J'aime »

Good :+1:
C’est en forgeant que l’on devient forgeron !

1 « J'aime »