Apprendre Swift à partir d'Objective-C

Les conditions, les structures de contrôle et les collections

Dans cette série d'articles, nous allons voir quelques-unes des différences présentes entre Swift et l'Objective-C. Ce tutoriel est plus approprié à ceux connaissant déjà l'Objective-C (au moins ses bases) et qui veulent connaître quels sont les équivalents avec Swift.

Eh bien, allons-y ! Voici un guide très pratique à garder sous la main durant votre apprentissage de Swift.

Retrouvez la première et la deuxième partie de ce cours :

Apprendre Swift à partir d'Objective-C : Introduction

Apprendre Swift à partir d'Objective-C : Variables, classes, méthodes et propriétés

Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas. 6 commentaires Donner une note à l'article (5).

Article lu   fois.

Les deux auteur et traducteur

Traducteur : Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Structure de contrôle

I-A. Écrire un bloc if

I-A-1. Objective-C

Notez que, dans le second exemple, l'instruction « if » teste si la variable « aString » est vide.

 
Sélectionnez
int score = 25;
if (score > 25) {
}
 
NSString *aString;
if (aString) {
}

I-A-2. Swift

En Swift, nous devons noter que la variable a une valeur optionnelle à l'aide d'un point d'interrogation. Cela veut dire qu'elle peut être vide. Ensuite, nous utilisons l'instruction « let » et un nom afin de tester si la variable « aString » est vide.

 
Sélectionnez
var score = 25
if score > 25 {
}
 
var aString: String?
if let myString = aString {
}

I-B. Écrire une instruction Switch

En Swift, l'instruction « switch » est bien plus flexible et peut-être utilisée avec différents types d'opérateurs de comparaisons. En Objective-C, l'instruction « switch » est limitée aux cas d'entiers.

I-C-1. Objective-C

 
Sélectionnez
int numberOfPeople = 1;
 
switch (numberOfPeople)
{
    case 1:
        // code for this case
        break;
    case 2:
        // code for this case
        break;
    default:
        // code for this case
        break;
}

I-C-2. Swift

Notez que l'instruction « break » n'est plus nécessaire !

 
Sélectionnez
var numberOfPeople = 1
 
switch numberOfPeople {
    case 1:
        // code for this case
    case 2:
        // code for this case
    default:
        // code for this case
}
 
var carMake = "Toyota"
 
switch carMake {
    case "Toyota":
        // code for this case
    case "Honda":
        // code for this case
    case "Nissan", "Subaru":
        // code for this case
    default:
        // code for this case
}

II. Les boucles

II-A. Écriture de boucles for

II-A-1. Objective-C

 
Sélectionnez
for (int i = 0; i < 10; i++) {
}
 
NSArray *array = @[@"item 1", @"item 2"];
for (NSString *item in array) {
}

II-A-2. Swift

Observez le second exemple écrit en Swift. Il est équivalent au premier exemple. La notation « ... » représente un intervalle.

 
Sélectionnez
for var i = 0; i < 10; i++ {
}
 
for i in 0...10 {
}
 
var array = ["item 1", "item 2"]
for item in array {
}

II-B. Écrire une boucle while ou une boucle do while

La syntaxe de la boucle « while » est presque identique à celle d'Objective-C (celle de Swift n'utilise pas de parenthèse).

II-B-1. Objective-C

 
Sélectionnez
int count = 1;
while (count < 10) {
    count++;
}
 
do
{
    count++;        
} while (count < 10);

II-B-2. Swift

 
Sélectionnez
var count = 1
while count < 10 {
    count++
}
 
do
{
    count++
} while count < 10

III. Les collections

III-A. Déclaration d'un tableau

La déclaration de tableau en Objective-C se fait à l'aide des classes NSArray et NSMutableArray et chaque tableau contient un mélange d'objets provenant de différents types de classes.

III-A-1. Objective-C

 
Sélectionnez
NSMutableArray *myArray = [[NSMutableArray alloc] init];
 
NSMutableArray *myArray2 = [@[@"item 1", @"item 2"] mutableCopy];

III-A-2. Swift

Notez que dans le second exemple de ce qui suit, nous ne spécifions pas que la variable est de type tableau de chaînes de caractères, parce qu'il est déduit à partir du tableau que nous lui assignons, À partir des éléments d'un tableau, Swift peut déduire que la variable est un tableau et qu'il contient des objets de type chaînes de caractères.

Même dans le premier exemple, nous n'aurions pas besoin de spécifier le type de la variable, car il peut être déduit à partir de la valeur que nous lui assignons.

 
Sélectionnez
var myArray:[String] = [String]()
 
var myArray2 = ["item 1", "item 2"]

III-B. Ajouter ou insérer des éléments dans un tableau

III-B-1. Objective-C

 
Sélectionnez
myArray[0] = @"item 1";
 
[myArray addObject:@"item 3"];
 
[myArray insertObject:@"item 4" atIndex:1];

III-B-2. Swift

Observez que dans l'exemple qui suit vous pouvez utiliser l'opérateur “+=” pour ajouter des objets dans le tableau.

 
Sélectionnez
myArray[0] = "item 1"
 
myArray.append("item 3")
myArray += "item 3"
 
myArray.insert("item 4", atIndex:1)

III-C. Déclaration d'un dictionnaire

Comme les tableaux en Swift, les dictionnaires ont besoin d'être typés et pour cela, vous devez définir les types de classes que le dictionnaire va utiliser pour ses clefs et ses valeurs.

III-C-1. Objective-C

 
Sélectionnez
NSMutableDictionary *myDictionary = [[NSMutableDictionary alloc] init];
 
NSMutableDictionary *myDictionary2 = [@{@"key":@"object", @"key2":@"object 2"} mutableCopy];

III-C-2. Swift

 
Sélectionnez
var myDictionary = Dictionary<String, String>()
 
var myDictionary2 = ["key":"object", "key2":"object 2"]

III-D. Ajouter et assigner des éléments à un dictionnaire

L'assignation d'un élément dans un dictionnaire en Swift et en Objective-C est très similaire,

III-D-1. Objective-C

 
Sélectionnez
[myDictionary setObject:@"object 3" forKey:@"key3"];
 
myDictionary[@"key2"] = @"object 4";

III-D-2. Swift

Notez qu'en Swift, vous pouvez utiliser la même syntaxe pour ajouter un couple clef/valeur ou réassigner un élément pour une valeur de clef.

 
Sélectionnez
myDictionary["key3"] = "object 3"
 
myDictionary["key2"] = "object 4"

IV. Que faire ensuite ?

Dans le prochain article de la série, nous allons nous intéresser aux protocoles et à la délégation ! Restez branché !

V. Remerciements Developpez

Nous remercions, Chris Ching, de nous avoir aimablement autorisé à publier son article. Cet article est une traduction autorisée dont le texte original peut être trouvé sur codewithchris.com. Nous remercions aussi Sirus64 pour sa traduction, LeBzul pour sa relecture technique ainsi que jacques_jean. pour sa relecture orthographique.

VI. Apprendre Swift à partir d'Objective-C

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2014 Chris Ching. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.