Développez autrement avec Swift

  • Auteur de la discussion Auteur de la discussion delete221380
  • Créé le Créé le
Statut
N'est pas ouverte pour d'autres réponses.
D

delete221380




1426195380-1426182709-triple-icones-dev.png



Développement iOS et OSX.
Développez autrement avec Swift sous Xcode


Swift, nouveau langage de programmation crée par Apple, introduit il y a peu de temps
il va petit à petit remplacé l'Objective-C dans la création d'applications sur les différents OS de
la firme à la pomme. Nous allons voir ensemble les rudiments de ce langage ainsi que des exemples
concrets d'applications fonctionnelles.


1425763289-statsdev.png



Vous devez être inscrit pour voir les médias





appstore_icon_large.png


L'architecture.
Une étape simple mais primordiale


Beaucoup de personnes l'oublient mais l'architecture, le plan et l'organisation de votre
application joue un grand rôle dans le développement. On ne peux pas partir comme ça avec une
simple idée en tête, il faut réfléchir avant. Surtout que ce soit sur les OS d'Apple ou de Microsoft on
nous propose des outils toujours plus performant et puissant, ça serait dommage de s'en priver.

Il n'y a pas grand chose à dire à propos de l'architecture, nous allons voir le reste dans la création
du projet Xcode, ce sont uniquement des choix stratégiques au final.





tools_xcode_large.png


Le code, tout un art.
Rentrons dans le vif du sujet


Déjà je pense que vous avez tous déjà entendu parler d'applications Cocoa, c'est un pré-requis pour
comprendre ce qui va suivre. Dans tout les cas pour commencer vous allez devoir installer Xcode,
il est disponible sur le Mac App Store gratuitement.
Je vais revenir un peu sur le choix stratégique que j'avais évoqué plus haut, que ce soit avec Swift
ou en Objective-C c'est les mêmes choix, vous allez devoir choisir la cible visée (version) que ce soit
pour iOS comme pour OSX, donc choisissez bien, généralement la majorité des utilisateurs sont en
dernières versions de leurs OS donc c'est pas trop un problème.


________________________________________________________________________________________________

I : Les rudiments du langage Swift : Viariables, constantes....

Bon c'est un passage lourd mais obligatoire, comme pour tout langage il y a forcément des bases et notions
à apprendre. On va commencer doucement avec les constantes et les variables
Que ce soit une constante ou bien une variable vous devez dans tout les cas les déclarées au préalable.
let = Constante (ne peut pas bouger); var = Variable (peut être modifiée)

1425900162-constante.png


Après chaque constante ou variable vous lui assignez une valeur, dans le cas de la variable on indique une
valeur de départ puisque ce ne sera pas constant.

Vous pouvez déclarer plusieurs variables en une seule ligne comme ceci


1425900272-varinline.png


Pour le moment on a simplement déclarer des variables et modifier leurs valeurs par rapport à celle de départ
il est également possible d'annoter un type de variable bien définit pour éviter les confusions.
Annoter une variable ou une constance se passe dès sa déclaration et c'est pas quelque chose de bien
compliqué.

1425900426-annotationstring.png


On est pas obligé d'annoter la variable puisque le compilateur sera capable de détecter lui même une
chaine de caractères et d’annoter : String derrière la chaine. Rien ne vous interdit de le faire. À l'issue d'une
fonction il vous est toujours possible de modifier la valeur d'une variable, il suffit d'indiquer la variable et de lui
fournir une nouvelle valeur tant qu'elle soit du même type, String/String, Integer/Integer etc...

Vous pouvez également utiliser le nom que vous voulez pour vos variables, même les caractères spéciaux
sont autorisés, je vous laisse mettre ce que vous voulez mais pourquoi pas.

1425900726-specialcaracter.png


Bon c'est bien de pouvoir nommer, assigner une valeur et annoter une variable mais il faudrait tout de
même la récupérer pour l'afficher dans une zone de texte ou une boite de dialogue.


1425900805-printvar.png


En faisant un appel à la fonction println vous pouvez retourner le contenu d'une variable, dans mon cas
je demande ma variable testMessage, le résultat m'affichera "SwiftTest". Comme tout les autres langages vous
pouvez demander d'afficher plusieurs choses, comme "Voici le résultat : + result"

1425900948-chaine-var.png


Pour la syntaxe, techniquement une instruction de fin de commande ";" serait attendu, pour une action
simple qui est contenu sur une seule ligne de code il n'y a pas besoin, mais par exemple
vous déclarez une variable et juste après sur la même ligne vous demandez sa valeur il faudra donc dans ce
cas séparer les deux actions par un ";"

1425901139-pointvirugle.png


Là nous avons vu les nombre entier et les chaines de caractères mais c'est encore un peu différent pour les
nombres à virgule flottantes. Forcément les nombres fractionnés ont une porté bien plus large comparé

aux entiers. Là il peut être utile de préciser le type de variable avec Float ou Double


Float : représente un nombre à virgule en 32 bits. (Plage : -3.4*10^-38 à 3.4*10^38) Octets : 4
Double : représente un nombre à virgule en 64 bits (Plage : -1.7*10^-308 à 1.7*10^308) Octets : 8
Long Double : Plus grande plage (Plage : -3.4*10^-4932 à 3.4*10^4932) Octets : 10


Je vais tout de même vous faire un rappel des types pour les nombres entiers


Uint : Entier non signé 32 bits
Uint64 : Entier non signé 64 bits
Int32 : Entier signé 32 bits
Int64 : Entier signé 64 bits
Long Int : Entier long (Plage : -3.4*10^-4932 à 3.4*^104932) Octets : 4


Si votre projet est un partage, n'hésitez pas a décrire vos actions ou a les commenter directement dans
le code source avec un simple commentaire, il existe 2 façons de mettre un commentaire dans votre code
soit un commentaire fait sur une seule ligne de cette façon :

1425901378-onelinecomment.png


Soit si vous pensez occuper plusieurs lignes vous pouvez faire comme ça

1425901469-multilinecomment.png


(NB : Il est possible de commenter un commentaire, CommentaryCeption :espion: )

Bon on en a enfin fini avec les contantes et variables, sachez que si vous devez additionner 2 variables
qui ne sont pas du même type, le compilateur déduira de lui même le type, Int + Int = Int
si vous ajoutez un entier à un nombre à virgule flottantes le résultat sera quasiment toujours
de type Double pour avoir la plus grande portée et plus grande précision puisque le Double
est représenté sur 64 bits.


____________________________________________________________________________________________________

II : Les rudiments du langage Swift : Les conditions, assertions...

Un programme est une suite d'instructions simple, on utilise très souvent les conditions pour faire
des sommes qui dépendent de la présence ou non de certaines variables ou de certains types en
particulier, Le compilateur peut facilement déduire quels type sont dans la condition, c'est l'étape de la
déduction mais la on va se focaliser sur ce qui nous sert le plus souvent (peu importe le langage) c'est-à-dire
les conditions, les opérateurs et autres fonctions simple comme des conversions de type

1425905925-varconditions.png


Pour savoir de quel type elle sera il nous suffit de faire une condition simple,

1425906072-conditions1.png


Une condition renvoie une valeur boolèene, c'est à dire 2 options possible soit la valeur renvoyé est
bonne donc la condition renvoie le résultat "True" soit ce n'est pas une bonne valeur et la conversation
ne peut être faite et la condition renvoie la résultat "False"


Vous pouvez également faire une condition pour voir si un texte choisit ou une constante
est égale ou non à une variable ou un autre texte choisit. Par exemple :

1425906210-conditions2.png


Ou encore comme ceci, on veut savoir si un texte est égale à une constante déclaré au début,
si le résultat est bon on renvoie un message en disant que la valeur est égale à celle déclarée.

1425906527-conditions3.png


Bon maintenant il est temps de parler un peu des assertions, à quoi ça sert ? c'est quoi ? etc..
Nous avons vu les conditions pour savoir si quelques choses sont vraies ou fausses, l'assertion intervient
quand une conditions doit forcément être vrai ou potentiellement fausse. Par exemple vous demandez
à des gens de remplir un formulaire via votre application et votre application est destinée aux personnes
ayant 16 ans ou plus, l'assertion sera utile dans ce cas, exemple :

1425909773-assertions.png


Vous n'êtes pas obligé de retourner un message, vous retirez ce qu'il y a après la virgule pour
poser uniquement une restriction. L'assertion peut être utilisée comme des bornes, c'est en
quelques sorte une exclusion.


_________________________________________________________________________________________________

III : Les rudiments du langage Swift : Les conversions de types


Pour additionner, fractionner ou tout simplement faire un calcul entre variables ou
constances il faut que le type soit converti. Exemple : vous voulez additionner
un nombre entier à un nombre à virgule flottantes, vous allez devoir convertir
votre entier en nombre à virgule pour que le résultat soit au bon format et ne génère
pas d'erreur.

1426195319-conversion.png


Par contre évitez au maximum de devoir convertir un nombre à virgule en nombre entier, il sera arrondit
et le résultat n'est pas très satisfaisant quant vous devez être précis. Exemple ; 5,25 sera arrondis à 5
c'est utile dans le cas d'une liste de personne ou autres puisque vous ne pouvez pas avoir de demi personne
(sauf à Fort Boyard :troll: )


Si vous voulez afficher une variable de type Int dans un champ de texte ou dans un label, vous
devez également convertir votre variable dans un type String, c'est pas très compliqué à réaliser.

Par exemple :

1426254473-convertstring.png


En savoir plus sur Cocoa >





icon_swift_hero_large.png


I - Exemples concrets
Mise en pratique de la théorie


Bon forcément vous allez devoir mettre la main à la patte dans cette partie, on va déjà commencer
par lancer Xcode et commencer un nouveau projet, la création du projet sera une synthèse de mon
anciennes rédactions sur Xcode, j'ai pas trop envie de me répéter :membre:

Pour utiliser la dernière version d'Xcode il vous faudra une machine sous OSX 10.9.4 ou supérieur.





Faites un nouveau projet, sauf si vous en avez déjà un ou une source vous pouvez l'ouvrir, mais autant
tout reprendre depuis le début.


Choisissez de faire un nouveau projet, vous allez atteindre l'éditeur directement vous
demandant de choisir entre une application iOS ou une application OSX, pour ma part
je vais choisir OSX, sachez que le développement sous iOS n'est pas plus compliqué
puisqu'il s'agit du même langage ;)


1426195319-choseproject.png



Ensuite l'éditeur vous propose de choisir un nom de produit, le nom de l'entreprise qui
sera décliné en copyright dans les informations de l'application, vous devez également choisir
le langage que vous voulez et également si vous voulez utiliser la "StoryBoard" etc....
On ne va pas trop s'attarder sur ces choses la, ce qui importe c'est juste de choisir Swift


1426195319-name-langage.png



Une fois ceci fait, choisissez un répertoire ou créer le dossier de l’application, ce dossier
contiendra les sources, le debug etc... je ne mets pas de screen pour cette étape vous êtes assez
grand pour choisir vous même :membre:


Bon c'est ici que les choses se compliquent un peu, vous allez devoir utilisé 15% de votre cerveau
pour choisir quel "deployment target" choisir, soit vous visez des ancienne versions d'OSX soit
vous visez la version 10.10 c'est à dire OSX Yosemite.

Après vous avez la possibilité d'ajouter une icône d'application, de choisir le numéro de version
de votre application, etc....


1427126014-accueil.png



Maintenant vous pouvez regarder sur la barre latérale à gauche, vous regardez dans
l’arborescence et cliquez sur "MainMenu.xib", si tout va bien vous allez voir une fenêtre
qui s'ouvre mais qui n'indique uniquement qu'une MenuBar (comme sur le Finder) mais
avec le nom de votre application. Vous allez devoir créer une fenêtre, ça sera la fenêtre
principale de votre application. Pour ce faire vous regardez sur votre gauche
et vous cliquez sur la dernière icône tout en bas de la barre latéral (elle devrait avoir le nom
de votre projet)


1427125986-viewform.png

 
Dernière édition par un modérateur:




icon_swift_hero_large.png


II - Exemples concrets.
Mise en pratique de la théorie




Une fois l'interface chargée vous ajoutez les composants, pour ma part je vais juste
tester d'ajouter 2 variables + poser une restriction au niveau de l'âge requis.

Ajouter 3 champs de texte, une ComboBox et 2 boutons, ça devrais faire l'affaire


1427125835-firstbuild.png



Une fois ici, l'interface utilisateur est prête, il ne nous reste plus qu'à définir les "outlet"
ainsi que les "actions". Commencez déjà par ouvrir l'assistant d'édition qui va ouvrir le
fichier .swift juste à côté de l'éditeur d'UI .


1427125872-assistanteditor.png



Cliquez sur le premier champ de texte, dans mon cas ce qui correspond à "Nom"
maintenez la touche "Ctrl" enfoncé et faite glisser sur la droite dans l'éditeur.
Ceci va nous servir a insérer un "outlet" ou bien une "action" future, comme définir l'événement
en cas de clique droit ou gauche etc...


1427125803-insertout.png



Normalement si tout s'est passé comme prévu, vous devriez voir une petite fenêtre s'ouvrir
en vous demandant de choisir le nom de "l'outlet", faites comme vous voulez mais pour éviter
de vous perdre indiquer "Name" et ainsi de suite ça sera bien plus simple pour la suite.


1426257060-choosenale.png



Faites ceci pour tout les composants, et normalement à la fin votre code devrais ressembler
à ceci. Dans l'ordre nous avons au début l'Outlet, qui juste derrière est suivi par le type de stockage
(vous avez le choix entre Weak ou Strong) suivi de la variable, suivi du nom de l'outlet
et enfin pour finir le type de composant associé, NSComboBox etc...


1426257554-outletdone.png



Par contre pour les 2 boutons c'est un petit peu différent puisque ce n'est pas un outlet
mais bien une action, donc vous faites la même manipulation que pour l'outlet mais dans
le type de connexion vous changez "Outlet" par "Action", et vous ne placez pas l'action
au même endroit qu'un outlet, Xcode va vous générer une fonction pour l'action du bouton.

Il faudra également choisir un nom pour l'action donc choisissez un nom évocateur qui
représente l'action à effectuer.


1426258846-action.png



Si vous avez un œil observateur vous pouvez remarquer que de base il y a une fonction
d'initialisation et de fermeture. Vous pouvez indiquer un message de bienvenue ou effectuer
un chargement des ressources supplémentaires depuis ce type de fonction.

Bon maintenant passons au code qui va nous ajouter 2 variables (dans notre cas c'est plutôt
des optionnelles) pour obtenir une phrase comportant le résultat lors de la validation.

Rendez-vous dans la fonction du premier bouton, celui qui servira à valider.
On va devoir indiquer nos variables (vu en haut du topic), on va en mettre que deux,
d'ailleurs une d'entre elles sera une constante pour une alerte. Je vous montre ma fonction complète


1426264520-functionok.png



Pour faire simple, j'ai indiquer une constante avec "let" qui sert d'instance pour mon message
d'alerte au cas ou l'âge demandé soit inférieur à la limite.

J'ai déclaré une variable AgeMini avec un type Int dont sa valeur est fixée à 16. D'ailleurs
j'aurai même dû la mettre en constante puisque c'est une limite fixe pour le moment.

Une fois les variables/constantes déclarées, je me suis attaquer à faire une condition qui sert
d'assertion dans ce cas puisque si l'âge renseigné est inférieur à 16 ans on donne un message
d'erreur indiquant que l'utilisateur ne possède pas l'âge requis. Comme c'est une condition
si la valeur "True" ressort on indique une erreur si c'est "False" (ce qui correspond au Else de
la condition) on ajoute les 2 variables dans une nouvelles phrases que l'on affiche dans le
3ème champ de texte.

You must be registered for see images attach


Vous pouvez encore faire plus complet en indiquant l'âge choisit en plus.
Il suffit de refaire une variable en indiquant var total = Name.stringValue + " " +
FirstName.stringValue, vous faite une seconde variable var resultat = total + " et vous
avez " + Age.integerValue.

Voici les 2 cas de figure une fois le code compilé :


[TABS]
[TAB=Erreur à cause de l'âge]
1426265286-error.png

[/TAB]
[TAB=Succès l'âge est supérieur]
1426265341-succes.png

[/TAB]
[/TABS]


Pour retrouver votre application une fois la compilation faite, il suffit de retrouver le dossier
créer au départ, pour ma part il se trouve à cet endroit.

You must be registered for see images attach
Macintosh HD ▸
You must be registered for see images attach
Utilisateurs ▸
You must be registered for see images attach
devr0 ▸
You must be registered for see images attach
Bibliothèque ▸
You must be registered for see images attach
Developer ▸
You must be registered for see images attach
Xcode ▸
You must be registered for see images attach
DerivedData ▸
You must be registered for see images attach
Projet ▸
You must be registered for see images attach
Build ▸
You must be registered for see images attach
Products ▸
You must be registered for see images attach
Debug ▸
You must be registered for see images attach
App





1426266218-tools-cloudkit-large.png


La fin.
Pour conclure


Je suis conscient que c'est un peu court pour expliquer les rudiments du langage Swift mais c'est
un bon début, il faut bien une base pour commencer. Je pense commencer une série dédiée
uniquement à ce langage un peu comme les épisodes sur le C#, une alternance Swift iOS et swift
OSX ne serait pas mal vu je pense. :membre:

Comme d'habitude si vous avez des questions ou autres n'hésitez pas à m'envoyer un message
privée, je réponds à tout le monde. ;)

1425833609-devr0-redaction-mac.png

Un grand merci à @Djamel SEC et @Lyrix pour leur aide plus que précieuse :love:
 
Dernière édition par un modérateur:
Énorme travaille, Félicitation ;)
 
Franchement créer un cours sur openclassroom
 
Franchement créer un cours sur openclassroom
J'aimerais bien le faire ici, il existe pleins de tuto sur le net, mais je préfère le faire à ma manière et le partager ici, mais ça va être long de faire quelque chose de vraiment très complet :/
 
Just wow... :o
Je vais m'y mettre dès maintenant :o
 
OMG :O Enorme topic, ça t'a pris combien de temps ? D:
 
Sa a l'air d'une durreté D:
Mais je ne m'en servirai jamais ^^
Merci du topic en plus super bien redigé
 
Wouaw ! :crazy:
Enorme topic GG !
 
Très beau topic et belle rédaction :love:
 
Salut,

Mon avis sur ton topic :
  • Très mal présenté
  • Ne sert à rien
  • Tout simplement moche
Mon avis sur toi :
  • Noob
Et ensuite un dernier point :
  • Tu me paye un MAC :pleure:

GG ma biche <3
 
Salut,
Merci de l'info et du tutoriel.
Serai-tu nous faire un petit tutoriel sur comment créer une WebApplication sur OS X sous xCode ?
Merci.
 
Super travail ma p'tite devrouille, ça change la vie swift.
Plus fuide que python puis j'ai un petit plus pour le design aussi et les fonctionnalités. :)
 
Super travail ma p'tite devrouille, ça change la vie swift.
Plus fuide que python puis j'ai un petit plus pour le design aussi et les fonctionnalités. :)
On est un peu moins libre que sous d'autres IDE mais franchement c'est largement jouable pour faire quelque chose de simple et de très fluide :D J'ai pas encore essayé de tester des applications sur iOS mais vu le résultat avec OSX je pense que c'est très honorable :bave:

Je ferais d'autres épisodes sur le Swift, ça a l'aire de plaire un peu :) Merci en tout cas :)
 
Wow franchement, excellente présentation, c'est clean ça donne envie de lire ce pavé, ce que je vais faire de suite !
 
C'est un superbe partage que tu as fais sur cette discussion, le visiel est vraiment présent ainsi que la qualité de rédaction, mise en page et conaissances appliqués. :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Retour
Haut