Ce n'est pas init() globalement qui est deprecated, c'est seulement la version sans nom de paramètre qui est deprecated pour Double pour le type (NSNumber ?) que tu passes comme paramètre.
Même avis, je ne suis vraiment pas fan de l'utilisation des variables $0, $1, etc. dans les closures. Ce qu'on économise en nombre de caractères, on le perd en lisibilité
Apple s'amuse à déprécier des tas de choses en ce moment.
Quand Xcode signale que quelque chose est deprecated, cela veut dire que cela fonctionne encore, mais que cela n'existera plus dans la version suivante de Swift. C'est pour cela qu'il te recommande d'utiliser ‘partial range from' à la place.
A part ça, ton code me pique les yeux avec les variables commençant par des MAJUSCULES ! Les majuscules c'est pour les noms de classes..
La convention de nommage Swift stipule qu'il faut réserver les Majuscules aux noms de classes. Regarde dans la doc Apple, tu ne verras jamais une variable commençant par une majuscule.
Dans le principe, Swift est le seul langage qui gère correctement toutes les subtilités d'Unicode. Mais en pratique, il arrive souvent au programmeur de devoir manipuler des chaà®nes ASCII toutes simples, et tout est incroyablement compliqué. Il y aura certainement des évolutions à ce sujet dans Swift 5.
Réponses
Regarde de ce coté là : https://stackoverflow.com/questions/44421140/init-is-deprecated-warning-after-swift4-convert
merci, j'ai utilisé cela :
j'aimerais bien comprendre pourquoi ce changement ?
Ce n'est pas init() globalement qui est deprecated, c'est seulement la version sans nom de paramètre qui est deprecated pour Double pour le type (NSNumber ?) que tu passes comme paramètre.
Si relativeAltitude est un NSNumber, il faut :
Mais n'oublies pas que cet variant renvoie un Double? (optionnel).
N'importe comment tu te débrouilles sur l'init, tu devrais éviter d'utiliser le '!' comme ça.
Tu es sûr que data ne peux jamais être à nil ?
Effectivement je risque de tuer un poney...
;-)
Voici l'ensemble du code :
Je me suis dit que le "if CMAltimeter.isRelativeAltitudeAvailable()" pouvais me préserver d'un data à nil non ?
Ou alors je fais du if let ?
Je suis preneur, comme amateur, de tous les conseils...
Bah non ! ::) Si tu regardes les paramètres du closure, tu verrais que data et error sont tous les deux optionnels.
...
Merci pour la leçon de code !
Du coup en prenant modèle son ton code, j'ai quelques autres modifications à faire ailleurs...
Euh, c'est vraiment la bonne syntaxe, nounours ?
On peut mélanger une formulation Objective-C avec du Swift ?
Ce n'est pas une formulation Objective-C, c'est une "Capture List". Les crochets indiquent les attributs des paramètres de la closure. Par exemple, il est courant d'utiliser [weak self].
Voir https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Expressions.html#//apple_ref/doc/uid/TP40014097-CH32-ID544
Oki. Merci. J'ignorais. A chaque jour sa petite pierre de connaissance !
En utilisant :
J'ai déclaré que je veux "capter" self en évitant de faire une référence circulaire.
Normalement, on utilise 'unowned' pour self ou 'weak' pour les vars externes ; mais il faut lire les docs pour mieux déterminer lequel.
Et, avec ce code ci-dessus, j'ai déclaré explicitement les types des paramètres pour les montrer à macphi.
Il n'est pas obligatoire de déclarer les types si on les connais bien et, dans ce cas là , on peut oublier les parentheses :
Et, si on voulait avoir l'air ultra-cool (et confondre ses collègues au même temps, on peut faire :
::) 8--) >:D
La première version est nettement plus lisible...
Je confirme !
::)
Même avis, je ne suis vraiment pas fan de l'utilisation des variables $0, $1, etc. dans les closures. Ce qu'on économise en nombre de caractères, on le perd en lisibilité
Je déterre ce post parce que j'ai bien avancé et je n'ai plus "que" deux warnings qui me donne un peu de fil à retordre :
Voici la ligne fautive, j'ai besoin d'extraire les 4 chiffres derrière le Q (sans mauvais jeu de mots)
Avez-vous une idée de ce que signifie ce message ?
Et là vous me direz, t'as demandé à DuckDuckGo ?
Oui mais le problème c'est que lorsque j'ai lu les réponses, je ne comprends plus bien la question que j'ai posée...
Et plus généralement connaissez-vous une doc/tuto pour bien gérer les chaines de caractères ?
Je trouve les fonctions complexes même pour des choses simples...
Merci
Apple s'amuse à déprécier des tas de choses en ce moment.
Quand Xcode signale que quelque chose est deprecated, cela veut dire que cela fonctionne encore, mais que cela n'existera plus dans la version suivante de Swift. C'est pour cela qu'il te recommande d'utiliser ‘partial range from' à la place.
A part ça, ton code me pique les yeux avec les variables commençant par des MAJUSCULES ! Les majuscules c'est pour les noms de classes..
Faut pas ?
NON ..
La convention de nommage Swift stipule qu'il faut réserver les Majuscules aux noms de classes. Regarde dans la doc Apple, tu ne verras jamais une variable commençant par une majuscule.
Cela améliore la lisibilité des programmes.
Ils sont pénibles...
Le code Q lui est TOUJOURS en majuscule !
::)
https://en.wikipedia.org/wiki/Q_code
Encore une histoire de String...
Les agences à 3 lettres aussi, mais tu peux les nommer en minuscule
Je ne connais pas la structure de ta chaine de caractères, mais tu peux essayer quelque chose comme :
Ce post de SO présente plusieurs manières de remplacer le subscript(from:) déprécié en swift 4 :
https://stackoverflow.com/questions/45562662/how-can-i-use-string-slicing-subscripts-in-swift-4?rq=1
Attention, le QNH peut aussi comporter 3 chiffres seulement... :-*
C'est toujours compliqué les histoires de Q
a
https://developer.apple.com/documentation/swift/string
Tu me rassures...!
::)
Et à part la doc d'Apple pas toujours facile à lire, vous n'auriez pas un lien plus "simple" ?
Merci
https://useyourloaf.com/blog/swift-string-cheat-sheet/
Ce n'est pas beaucoup plus simple que la doc d'Apple, mais c'est presque exhaustif, alors que la doc d'Apple ignore de nombreux cas fort courants.