iOS Utilisation des classes rapides dans Objective-C


Exemple

Étape 1: Créer une nouvelle classe Swift

Ajoutez un fichier .swift à votre projet et nommez-le MySwiftObject.swift

Dans MySwiftObject.swift :

import Foundation

class MySwiftObject : NSObject {

    var someProperty: AnyObject = "Some Initializer Val"

    init() {}

    func someFunction(someArg:AnyObject) -> String {
        var returnVal = "You sent me \(someArg)"
        return returnVal
    }

}

Étape 2: Importation de fichiers Swift dans la classe ObjC

Dans SomeRandomClass.m :

#import "<#YourProjectName#>-Swift.h"

Le fichier <#YourProjectName#>-Swift.h devrait déjà être créé automatiquement dans votre projet, même si vous ne pouvez pas le voir.

Étape 3: Utilisez votre classe

MySwiftObject * myOb = [MySwiftObject new];
NSLog(@"MyOb.someProperty: %@", myOb.someProperty);
myOb.someProperty = @"Hello World";
NSLog(@"MyOb.someProperty: %@", myOb.someProperty);
NSString * retString = [myOb someFunction:@"Arg"];
NSLog(@"RetString: %@", retString);

Remarque:

1. CodeCompletion ne se comportait pas aussi précisément que je le voudrais. Sur mon système, exécuter une compilation rapide avec "cmd + r" semblait aider Swift à trouver une partie du code Objc et vice versa.

2. Si vous ajoutez le fichier .swift à un projet plus ancien et obtenez une erreur: dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib , essayez de redémarrer complètement Xcode.

3. Alors qu'il était à l'origine possible d'utiliser des classes Swift pures dans Objective-C en utilisant le préfixe @objc , après Swift 2.0, cela n'est plus possible. Voir modifier l'historique pour l'explication originale. Si cette fonctionnalité est réactivée dans les futures versions de Swift, la réponse sera mise à jour en conséquence.