Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Approfondissez Swift avec la POO

    Team OC 31 juillet 2018 à 17:42:12

    Tu as raison Vincent et j'ai corrigé la correction de l'exercice. Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      14 août 2018 à 22:06:32

      Bonjour,

      Je voudrais savoir comment créer un ROBOT pur Discord.

      • Partager sur Facebook
      • Partager sur Twitter
        20 septembre 2018 à 16:24:18

        Bonjour,

        Simplement pour signaler une erreur de texte dans le chapitre "Plongez dans les coulisses de l'initialisation".

        Tu expliques l'initialisation pratique en modifiant la classe HomeRoadSection.
        Cependant dans le texte, tu dis que tu peux écrire SchoolRoadSection() ou lieu de HomeRoadSection()

        Voir lien 

        -
        Edité par JustinRegnaud 20 septembre 2018 à 16:25:10

        • Partager sur Facebook
        • Partager sur Twitter
          Team OC 23 septembre 2018 à 11:03:21

          Merci beaucoup Justin d'avoir noté cette erreur. Elle est corrigée !
          • Partager sur Facebook
          • Partager sur Twitter
            14 novembre 2018 à 11:46:43

            Bonjour, mon application console me demande le prénom, nom et âge,, et suivant la réponse, vous classe en premier, deuxième ou troisième âge. Elle n'exécute  que le premier, mais pas le deuxième et le troisième cas.

            Merci pour votre coup de main

            Voici le code

            print("Entrer votre prenom")
            var prenom = readLine()

            print("Entrer votre nom")
            var nom = readLine()

            print("Entrez votre âge")
            var age = readLine()

            let monAge = 0

            // Votre âge vous indiquera si Vous êtes  du premier, deuxième ou troisième âge
            switch monAge {
            case 0...25:
                print("Vous êtes du premier âge!")
            case 26...69:
                print("Vous êtes du deuxième âge!")
            default :
                print("Vous êtes du troisième âge!")
            }

            -
            Edité par Thiecko 14 novembre 2018 à 11:47:09

            • Partager sur Facebook
            • Partager sur Twitter
              14 novembre 2018 à 11:49:51

              Salut, tu fais : let monAge = 0

              Puis tu switch sur monAge qui est à 0 (j'imagine que tu veux switch sur age plutôt et que monAge ne sert à rien) donc tu affiche toujours le premier truc. Erreur d'inattention.

              • Partager sur Facebook
              • Partager sur Twitter
                14 novembre 2018 à 12:20:10

                Bonjour Geda, je n'ai pas très bien compris ton explication. Le premier switch fonctionne, mais ne change pas qu'importe la valeur que je donne.

                J'aimerais savoir où se trouve l'erreur.

                Merci

                • Partager sur Facebook
                • Partager sur Twitter
                  14 novembre 2018 à 14:09:39

                  la réponse suivante est plus appropriée

                  -
                  Edité par Philippe2463 14 novembre 2018 à 16:44:20

                  • Partager sur Facebook
                  • Partager sur Twitter
                  La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                    14 novembre 2018 à 16:18:33

                    Remplace 

                    let monAge = 0

                    par

                    let monAge = Int(age) ?? 0

                    et ça devrait fonctionner

                    Toi tu as fait : 

                    /*
                    N'importe quel code, tu peux multiplier des framboises ici ça changera pas grand chose à la suite. D'ailleurs, tu peux commenter ton code, tu verras que ça compile toujours et que la sortie est identique
                    /*
                    
                    let monAge = 0
                    switch monAge {
                    case 0...35: print("Toujours exécuté. Puisque monAge = 0")
                    default: print("Jamais exécuté")
                    }
                    
                    



                    -
                    Edité par Geda 14 novembre 2018 à 16:23:01

                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 novembre 2018 à 9:46:28

                      Merci beaucoup, il manquait le (!) après âge.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 novembre 2018 à 9:58:26

                        Non... Mais si t'insiste, ok ! :)

                        -
                        Edité par Geda 15 novembre 2018 à 9:58:47

                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 novembre 2018 à 11:06:58

                          le programme fonctionne, je suis un tout nouveau. Teste de ton côté pour voir

                          print("Entrer votre prenom")
                          var prenom = readLine()

                          print("Entrer votre nom")
                          var nom = readLine()

                          print("Entrez votre âge")
                          var age = readLine()

                          let monAge = Int(age!) ??  0

                          // Votre âge vous indiquera si Vous êtes  du premier, deuxième ou troisième âge
                          switch monAge {
                          case 0...25:
                              print("Vous êtes du premier âge!")
                          case 26...69:
                              print("Vous êtes du deuxième âge!")
                          default :
                              print("Vous êtes du troisième âge!")
                          }

                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 novembre 2018 à 12:21:29

                            Ah oui, je l'avais loupé celui là, bien vu ;) 

                            Cependant, évite les "!". Si l'utilisateur rentre rien ça va crasher. Prend le réflexe d'unwrap les optionnels. T'as plusieurs méthodes : 

                            // #1 Default value
                            let monAge = Int(age ?? "") ?? 0
                            
                            // #2 If let
                            
                            if let age = age, let monAge = Int(age) {
                               switch monAge {
                                 ...
                               }
                            }
                            
                            // #3 Guard let
                            
                            guard age != nil, let monAge = Int(age!) else { return }
                            switch monAge {
                               ...
                            }

                            Un peu de chantilly avec tout ça et ça donne : 

                            enum MyError: String, Error, CustomStringConvertible {
                                case invalidAge = "Age saisi non valide"
                                
                                var description: String {
                                    return self.rawValue
                                }
                            }
                            
                            func getAge() throws -> UInt {
                                print("Enter your age")
                                guard let age = readLine(), let monAge = UInt(age) else {
                                    throw MyError.invalidAge
                                }
                                return monAge
                            }
                            
                            func displayAgeCategory(age: UInt) {
                                switch age {
                                case 0...20: print("First")
                                case 21...30: print("Second")
                                default: print("third")
                                }
                            }
                            
                            
                            do {
                                let age = try getAge()
                                displayAgeCategory(age: age)
                            } catch {
                                print(error)
                            }
                            



                            Crash-safe avec une gestion d'erreur !

                            -
                            Edité par Geda 15 novembre 2018 à 12:37:10

                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 novembre 2018 à 2:26:17

                              EDIT : Résolu

                              -
                              Edité par Le Dépeceur 20 novembre 2018 à 2:33:24

                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 janvier 2019 à 11:04:09

                                Bonjour à tous,

                                 Je tombe sur une petite incompréhension... 

                                Dans mon code quand j’appelle ma fonction ligne 22, elle fonctionne et me créér donc 11 sections de route.

                                Or dans l’init de Road je ne fait qu’ajouter des RoadSections au tableau sections (et non pas parcourir pour appeler les valeur que contienne mes RoadSections... RoadSection qui contient la méthode pour créer a l’écran des portions de route).

                                Est ce que le fait d’ajouter à un tableau par une boucle (l 14 à 16), le fait également parcourir, et donc appel les valeurs qu’il contient?

                                Merci beaucoup,
                                Aude 

                                -
                                Edité par AudeChevalier1 11 janvier 2019 à 11:37:49

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  11 janvier 2019 à 11:55:37

                                  Salut, je ne comprend pas trop ton problème. Déjà parce que sur ta capture d'écran il n'y a que deux mots par ligne et que c'est chiant à lire. Mais aussi parce que ta question n'est pas clair.

                                  Peux-tu clarifier tout ça ? 

                                  Sinon, au risque d'enfoncer des portes ouvertes (mais faute de mieux). L'init ajoute 11 section de type plain au tableau de sections et rien d'autres.

                                  -
                                  Edité par Geda 11 janvier 2019 à 11:55:54

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    13 janvier 2019 à 19:10:16

                                    Salut Geda,

                                    Merci pour ton rapide retour.

                                    Effectivement à l'avenir je veillerais à ce que le code soit plus lisible!

                                    On m'a aidé à résoudre mon incomprehension, en fait je n'avais pas saisie que dans la ligne 16 , self.sections.append(RoadSection(.plain)), on rajoutais bien a un tableau mais surtout on créée un nouvel objet ( en gras ) voila pourquoi les sections se sont bien construites dans le code et a l'ecran !

                                    Merci quand même.

                                    Aude

                                    Ps: Je suis passé à l'autre cours :

                                    Développez une application iPhone avec le modèle MVC"

                                    Mais je ne parviens pas a trouver le forum correspondant, pourrais tu, si tu l'as me transmettre le lien?
                                    D'avance merci beaucoup,

                                    Aude 





                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      13 janvier 2019 à 21:52:03

                                      https://openclassrooms.com/forum/sujet/mooc-une-application-iphone-avec-le-modele-mvc?page=2#message-92729570

                                      Apres si t’as des questions, tu peux très bien les poster n’importe où dans le forum mobile. 

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        14 janvier 2019 à 15:11:16

                                        Merci Geda !

                                        -
                                        Edité par AudeChevalier1 14 janvier 2019 à 15:11:49

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          10 juillet 2019 à 21:27:29

                                          Bonjour,

                                          J'espère que quelqu'un pourra répondre à ma question, je suis dans le Chapitre 2, dans "Découvrez les propriétés et méthodes de classe" et j'aperçois le "self.sections.append(RoadSection())" d'un coup sans trop d'explications. 


                                          class Road {
                                              var sections = [RoadSection]()
                                              
                                              static let maxLength = 77
                                              
                                              init(length: Int) {
                                                  var length = length
                                                  if length > Road.maxLength {
                                                      length = Road.maxLength
                                                  }
                                                  
                                                  
                                                  for _ in 0..<length {
                                                      self.sections.append(RoadSection())
                                                  }
                                              }
                                          }


                                          je voudrais juste savoir pourquoi on utilise "append" et si "(RoadSection())" représente bien la classe ?


                                          Merci beaucoup !



                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            11 juillet 2019 à 8:22:49

                                            Salut,

                                            append c’est une méthode qui peut etre utilisé sur une liste. Elle permet d’ajouter un objet dans une liste. Il y a plein de méthodes qui existent déjà qui sont definies dans Swift. 

                                            Par exemple

                                            let someInt = 3

                                            someInt.isMultiple(of: 9)

                                            RoadSection() crée un objet de type RoadSection. C’est une instance de classe  Pas la classe elle même. C’est équivalent à :

                                            let section = RoadSection()


                                            sections.append(section)

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              26 juillet 2019 à 23:57:23

                                              Bonjour à tous !

                                              D'abord félicitations pour le cours, il est vraiment très bien fait et très bien expliqué. 

                                              J'ai néanmoins un petit problème, enfin deux, l'image parle d'elle même. 

                                              Merci d'avance pour vos réponses ;)

                                              Edit : pour la deuxième j'avais juste oublié de créer la variable road ...

                                              -
                                              Edité par Floz 27 juillet 2019 à 7:59:03

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                27 juillet 2019 à 14:16:40

                                                Salut,

                                                pour la premiere ça dit qu'il ne connait pas la classe Road. Etant donné qu'elle est déclarée plus bas, je comprend pas trop. Clean + Rebuild ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  27 juillet 2019 à 16:56:24

                                                  Merci beaucoup de ta réponse, j'ai passé Xcode à cleanMymac, j'ai fait un cmd + shift + k, un cmd + shift + option + k et redémarré Xcode 10.1 (puisque c'est la version la plus récente que j'ai pu installer) mais rien n'a changé :'( 

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    27 juillet 2019 à 19:29:04

                                                    Pas le peine d’en arriver à de tels extremités haha

                                                    T’es dans le playground ? Ca donné quoi si tu met ta classe Road Au tout début du fichier (avant de l’utiliser donc) ?

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      28 juillet 2019 à 9:46:04

                                                      Oui je suis dans le playground. Le problème a bizarrement disparu mais un autre est apparut LOL

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        28 juillet 2019 à 10:04:38

                                                        En fait, dans le playground, il ne connait pas tout ce qui est déclaré après. Il fait sa vérification ligne par ligne.

                                                        Du coup si tu déclares RoadSection après Road ça ne fonctionnera pas.

                                                        // fonctionne pas
                                                        class A { var b: B}
                                                        class B {}
                                                        
                                                        // fonctionne
                                                        class B{}
                                                        class A { var b: B}
                                                        
                                                        // T'es foutu
                                                        class B { var a: A }
                                                        class A { var b: B }
                                                        

                                                        -
                                                        Edité par Geda 28 juillet 2019 à 10:04:53

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          28 juillet 2019 à 20:50:37

                                                          C'est ce que j'ai pensé mais merci beaucoup du temps pris pour me répondre et pour les éclaircissements :D
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            16 août 2019 à 19:31:02

                                                            Le rythme d’une semaine par partie permet un avancement régulier en fixant des dates limites sur le rendu des devoirs. L’avancement du cours sans rythme vous permet quant à lui une grande flexibilité, car vous pouvez réaliser vos exercices à tout moment.





                                                            ________________________________________________________________

                                                            syndicat assistante maternelle syndicat assmat outil assmat fiche de paie assmat SPAMAF

                                                            -
                                                            Edité par SlideLiv 17 août 2019 à 12:20:20

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            MOOC Approfondissez Swift avec la POO

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            • Editeur
                                                            • Markdown