Swift Map Filter Reduce mémo

Lorsque l’on pense opérations sur des types Array ou Dictionary en Swift, on a souvent le réflexe for-in loop… Mais Swift propose d’autres méthodes comme map, filter, reduce… potentiellement plus efficaces. Voici donc un petit mémo à ce sujet 🙂

Map

Map sert à parcourir une collection er à appliquer la même opération à chaque élément de cette collection. La fonction map retourne un array contenant le résultat. Dans l’exemple suivant, la fonction map est utilisée pour retourner le carré de chaque item d’un tableau :

Le type de retour de la fonction map n’est pas limité au type des éléments d’origine :

Et enfin, la fonction map peut être utilisée sur tout type de collection :

Filter

La fonction filter parcourt un array ou une collection et retourne un array contenant les éléments correspondant à la condition demandée. Ex: recherche des entiers divisibles par 2:

Reduce

Reduce sert à combiner tous les éléments d’une collection pour créer une nouvelle valeur. Dis comme cela, ce n’est pas très parlant, mais voici quelques exemples :

  • Ajouter toutes les valeurs d’un array à une valeur initiale de 15 :
  • Fusionner des chaînes :

flatMap et compactMap

  • flatMap :
  • compactMap :

En résumé :

  • map permet de retourner un array contenant le résultat d’une transformation appliquée à chaque item.
  • filter retourne un array contenant seulement les éléments correspondant à une condition donnée.
  • reduce retourne une seule valeur calculée en combinant chaque item avec une valeur initiale.

Un dev iOS au pays de Mac OS

Cela faisait un petit moment que je n’avais pas publié d’articles. Je vous rassure, je n’étais pas perdue au milieu du désert de Gorafe, mais plutôt en plein projet… macOS.

J’ai en effet eu le bonheur de contribuer à un projet mac OS écrit en Swift, et cela m’a donné l’occasion de me frotter un peu plus sérieusement à Cocoa et consorts… et d’en faire un petit retour d’expérience 🙂 .

Venant tout droit du dev iOS, donc d’UIKit, de prime abord, cela ressemble énormément. On remplace tout ce qui est UI par NS (ex : UITextField devient NSTextField) et ça repart… pas très loin justement 😦

En effet, on s’aperçoit vite que toute la syntaxe est un poil différente. Par exemple, pour changer le texte dans un champ texte, sous UIKit, on utilise la syntaxe : monJoliTextFielt.text = « Bonjour » Et sous Cocoa, la syntaxe est monJoliTextField.stringValue = « Bonjour »

Ces petites différences, ajoutées à un certain manque de documentation en ligne (en tous cas pour Swift) comparé à iOS font que le développement peut parfois devenir un peu… lent 😦 Il faut parfois (souvent) adapter la syntaxe ObjectiveC à Swift, et ça prend du temps… Vive StackOverflow !

Mais franchement, une fois assimilé, la programmation d’une application Mac OS en Swift devient franchement plaisant.

En tant que dev iOS et donc utilisateur Xcode, je retrouve la construction d’interfaces par storyboards. Là encore, les éléments ne sont pas exactement les mêmes, mais avec un peu de patience et de recherches, on s’y retrouve. Et pour le reste, cela reste du Swift.

Du coup, si j’étais au départ un peu anxieux par rapport au fait de passer de mon iOS « chéri » à Mac OS, je me suis rapidement pris au jeu et je serais maintenant partant pour recommencer sur un autre projet Mac OS 🙂

Et puis, il ne faut pas oublier qu’encore une fois, Apple pense à nous faciliter la vie avec le projet Marzipan, depuis renommé Catalyst :). Donc si tout va bien, d’ici quelques temps, on ne se prendra plus la tête à développer une application pour iOS ou Mac OS, mais on développera une application tout cours !

Bon pour le moment, je vous laisse, j’ai des applis à mettre à jour pour iOS et iPad OS 13 🙂

Mes lectures de cet été 2019

Il n’y a pas que le code dans la vie (quoi que…), alors comme chaque été, je vous partage mes lectures de vacances…

Bon, c’est les vacances, mais rien n’interdit de lire des livres en rapport avec sa passion… 🙂 Ce livre n’est pas un livre technique, mais plutôt un ensemble de « trucs et astuces » pour améliorer son travail de développeur.se de manière « pragmatique ». Cela se présente sous la forme d’analogies et de petites histoire très faciles à lire et surtout à retenir. Pour moi, c’est un must !

J’adore Stephen King, et là j’avoue avoir eu du mal à me remettre de cette lecture ! Amateurs.rices d’horreur, passez votre chemin, ce n’est pas le sujet. Par contre, si vous avez dépassé 35 ans, cette « étude sociologique » de la société Américaine est peut-être faite pour vous…

Evitez juste de le lire si vous n’avez pas le moral 🙂

« Une chose encore capable de vous faire rire plus de trente ans après ne peut pas avoir été une perte de temps. Je pense même qu’une telle chose frôle l’immortalité. »

« C’est solide, les cœurs. En règle générale, ils ne se brisent pas. Les cœurs, ça plie sans se rompre. »

« Les cœurs peuvent se briser. Oui. Les cœurs peuvent se briser. Parfois, je me dis qu’il vaudrait mieux que nous mourions, en de tels moments, mais nous ne mourons pas. »

Un livre que nous avons sans doute tous.tes lu durant notre adolescence… mais qu’il fait bon de relire à l’âge adulte 🙂

« « Mon cœur craint de souffrir, dit le jeune homme à l’Alchimiste, une nuit qu’ils regardaient le ciel sans lune.
— Dis-lui que la crainte de la souffrance est pire que la souffrance elle-même. Et qu’aucun cœur n’a jamais souffert alors qu’il était à la poursuite de ses rêves, […]. »

Une fiction historique qui nous projette au temps de la construction des cathédrales. Difficile d’en décrocher une fois que l’on a commencé 🙂

Là, c’est tout de suite plus léger… Mais c’est techno et cela se passe à Nantes alors… Bon, comme dans tous les livres du genre, il y a quelques « à peu prés » avec la réalité technologique. En oui, faut bien perpétrer le mythe du méchant hacker dans son coin… Mais, j’ai quand même bien aimé l’histoire, avec un suspense qui ne nous laisse pas respirer 1 seconde… Et puis cela m’a permis de me remettre de Coeurs perdus en Atlantide (je suis trop sensible 😦 ).

Une application mobile Android / iOS en 1 journée ?

Application mobile Siberian

Depuis quelques années, on voit apparaitre sur le web des générateurs d’applications mobiles. La promesse est la même que pour les cms et les générateurs de sites web : pouvoir bénéficier d’un travail professionnel sans aligner une seule ligne de code…

Et comme pour les cms et autre générateurs de sites web, la réalité est quelque peu nuancée…

Suite à la demande d’un client, je me suis re-penchée sur SiberianCMS, que j’avais déjà testé il y a quelques années sans être convaincue plus que ça.

Le mois de juillet et ses chaleurs aidant, je me suis lancée comme défit de créer une application multiplateforme, avec SiberianCMS, en 1 journée… Voici donc un compte rendu de mes aventures 🙂

Lire la suite

Merci beaucoup !

L’application mobile iOS kayak Tracker démarre en trombe, et le blog à de plus en plus de succès !

Il était donc temps que je dise un immense merci donc à tous.tes ceux-elles qui me suivent et aiment mon travail !

J’ai encore des centaines d’idées de tutos de développement et des milliers d’idées, alors ne vous inquiétez pas, l’aventure ne fait que commencer !

Programmation Swift : iOS Developer Notes For Professionals

ios Dev Pros

Voici mon nouveau livre de chevet : iOS Developer Notes for Professionals !

Je crois que tout le langage Swift est abordé dans ce livre ! Cela va de la création toute simple d’une UIView au parsing de JSON, tout en passant par l’usage de des frameworks les plus utilisés (Fastlane…) et des designs paterns (MVC, MVVM…).

Bref, le top du top pour le développeur Swift !

Bon, finalement, le lire avant de s’endormir n’est pas forcément la meilleure idée, mais c’est le genre de livre à garder impérativement sous la main toute la journée de développement !

En plus, il est gratuit !

A télécharger (sans modération) ici :

iosDeveloperBook