Formation Formateur Swift

by Apple

Jour #2

Prog

  • interface builder
  • func, structures class
  • Displaying Data
  • Controls
  • Autolayouts, StackViews, Calculator
  • Labs
  • Qu'est ce qu'une excellente app ?

Finir debbugage de la veille

  • FirstTimeDebugging App
  • ne fonctionne pas
  • 2 bugs errors de xcode (guidage)
  • message il manque { un peu flou et un autre qui parle du nom d'un paramètre qui doit être suivi par :
  • Warning : variable jamais utilisé, correction var en let
  • correction interactive : point blanc (solution proposée)
  • bouton fix pour actions
  • refaire un cmd+b pour voir si elle a été corrigée
  • Attention : se méfier des propositions, error où il faut ajouter un ;, il ne comprend pas votre code, on va avoir une autre fois la même erreur juste après
  • Attention : MAJ des settings du projet car compilateur a évolué (rajouter des warning supplémentaire)

Finir debbugage de la veille

  • Depuis Xcode 9 : lancement simultané de simulateur
  • Plusieurs appareil de lancer sans avoir besoin de relancer (nb max dépend de votre mac) il vous dira si c'est trop
  • Debug que sur un seul simulateur à la fois
     
  • 1 error de compilation : collection vide à cause d'un double removeFirst() dans AppDelegate
  • Break point et cmd+r
  • thread1 break point
    on voit la valeur de testArray et voir le contenu
  • Bouton pour continuer le run : continue program execution
  • Bouton step over : pas à pas va à la ligne suivante

Break point

  • Actif/inactif : selon la couleur (bleu/gris)
  • l'intégralité des break point peuvent être désactivés
  • si désactivé avant la désactivation générale (garde les états actif/inactifs)
  •  

Accès documentation

  • clic sur un élément : Barre latérale avec menu ?
  • alt+Clic sur un élément : point d'interrogation
  • exemple sur la documentation d'une fonction
  • On peut charger la documentation en local

interface builder

  • storyboard main
  • composants
  • controls : outlet action

Storyboard

  • scène
  • segue way : chemin, relation expliquée entre les scènes, infos de transition et ou de relation
  • creation new projet
  • voir le fichier principal : main (et pas lunch screen)
    dans le main interface
  • et voir la storyboard main

Main storyboard

  • clic sur ma scène
  • menus côté droit : onglet milieu : background
  • comment mettre plus de temps sur le launch screen
     
  • exercice champs texte et bouton
  • en bas partie droite : en jaune nouveaux types de scène (pas maintenant)
  • composants text field et button
  • champs de recherche de composant en bas
  • tas de guides bleus pour positionner, espacer, aligner, aérer, mettre des marges
  • human interface guidelines (documentation)

Main storyboard

  • label
  • double clic ou barre latérale pour changer le texte
  • manque visibilité
  • Font augmentée à 25 et label à save

     
  • exercice récupérer, interagir avec l'UI pour print le champ text
  • mode assistant, deuxième petit bouton, d'un coté UI et de l'autre le code en même temps
  • variable pour accéder au champs text : nameTextfield
  • clic + ctrl de l'élément bouton,
  • proposition d'outlet (ma variable)
  • weak on lui fait confiance, on est d'accord (pas mtn)
  • @outlet, petit point pour voir à quoi c'est relié

Main storyboard

  • exercice récupérer, interagir avec l'UI pour print le champ text
  • créer le lien de l'élément bouton vers code : ctrl + clic
  • ici on créer une action
  • on choisi le type d'event, le type UIButon
  • fonction swift créer, argument sender par défaut ()
  • On print le text du champs dans cette action, dans la console du terminal
  • Si j'ai rien à faire de mon label : je n'ai pas besoin d'outlet
  • Si customisation : outlet oui

Composants et Controls utilisables

  • Controls : actions ou IBActions
  • Outlet : tout le reste, les variables ect
  • Labels, button, textfield (evenement on text changing)
    type de contenus, types de clavier (si adresse mail tel clavier, si numero tel afficher clavier numérique ect)
  • uiimageview
  • scale to fill : apparaitre toute l'image dans la zone, attention peu déformer l'image
  • aspect fit : apparaitre intégrale sans déformation
  • aspect fill : apparaitre une partie de l'image qui remplie toute la zone

Autres composants

  • UIswich
    value on/off
  • UISliders
    toujours lié à un sender et à un valeur change (.value)
    définir par défaut, val min, val max et on peut récupérer les valeurs entre en Float
    pas ne notion de pas, de range dans le sliders
  • Listes : plusieurs types différents
  • Liste déroulante : tableview
  • listes avancées : collection view, scroll view
  • Picker view : (date picker)

Exercice guidé appelé Light

  • UIImage ajouter dans Assets
  • créer UIImageView
  • Image en png
    à chaque fois en différentes résolutions
    100x100 pour l'imageView
    il faudrait prévoir pour tous les appareils
    100x100 (pu besoin), 200x200 == 2x et 300x300 == 3x
     
  • p25 : light ou 96
  • help : cmd+shift+0
  • UISwitch outlet + button et on modifie view.background
  • Sinon refaire le switch avec un button et une enum

Unit 2.2 : Les fonctions

  • Swift utilise des paramètres nommés par défaut
  • nom du paramètre apparait quand on l'appelle
  • Optimisé :
    On peut appeler la fonction dans un résultat print
     print("Bienvenue à l'école vous avez \(coursJournee(matin: 5, apres: 6)) cours aujourd'hui")

    func coursJournee(matin: Int, apres: Int) {
        return matin + apres
    }
  •  

Unit 2.2 : Les fonctions

  • on peut utiliser un nom externe pour les arguments
  • en donnant 2 noms à la suite
  • on peut omettre les params quand très explicite (func add par exemple avec _ qui le rend optionnel)
  • On peut Fixer une valeur par défaut (proposera 2 fonctions pour le prix d'une), pour tous ou aucun

Ajouter device iPad à la place d'un simulateur

  • compte developer gratuit
  • developer.apple.com
    dans certificates et devices
    chercher UIUD dans Xcode
  • dans Xcode window>devices and simulators et on trouve l'ID
  • Dans le fichier de config mettre une team et un compte dev

Structures

  • exemple person
  • Ne pas se tromper avec la minuscule et la majuscule entre variable et type de la structure (Xcode ne dira rien)
  • methodes
  • initialiser : init(), on peut les redéfinir (comme constructeur) exemple : String.init()
  • Plusieurs façon de les générer
    pas envie, je mets des valeurs par défaut
    notion d'instance
     
  • différence entre structure et une classe ?
  • mutating method : modifient une variable de ma structure
    vérifier que les func qui modifient la structure on va mettre : mutating func

mot clé : mutating func

  • si on a une structure const toutes les valeurs sont const même si il y a marqué var

computed property

  • variable qui exécute du code pour récupérer une valeur
  • propriété calculée : mélange entre fonction et variable
  • différence : pas de paramètres à passer
  • en JS ils peuvent en passer
  • exemple : structure temperature
  • prop calculée

labs

  • memberwise initializer == init par défaut toute les var
  • xxx
  • class : héritage et surtout sécurité entre les instances

Formation Formateur Swift Jour 2 by Apple

By pierreb4u

Formation Formateur Swift Jour 2 by Apple

  • 229