iOS Utilisation des classes Objective-C dans Swift


Exemple

Si vous souhaitez utiliser une classe existante, effectuez l' étape 2 , puis passez à l' étape 5 . (Dans certains cas, j'ai dû ajouter un #import <Foundation/Foundation.h explicite à un fichier ObjC plus ancien)

Étape 1: Ajouter une implémentation Objective-C - .m

Ajoutez un fichier .m à votre classe et nommez-le CustomObject.m

Étape 2: Ajouter un en-tête de pontage

Lorsque vous ajoutez votre fichier .m , vous serez probablement frappé par une invite qui ressemble à ceci:

entrer la description de l'image ici

Cliquez sur OUI !

Si vous n'avez pas vu l'invite ou supprimé accidentellement votre en-tête de pontage, ajoutez un nouveau fichier .h à votre projet et nommez-le <#YourProjectName#>-Bridging-Header.h

Dans certaines situations, en particulier lorsque vous travaillez avec des frameworks ObjC, vous n'ajoutez pas explicitement une classe Objective-C et Xcode ne trouve pas l'éditeur de liens. Dans ce cas, créez votre fichier .h nommé comme mentionné ci-dessus, puis assurez-vous de lier son chemin dans les paramètres du projet de votre cible, comme suit:

entrer la description de l'image ici

Remarque

Il est $(SRCROOT) de lier votre projet à l'aide de la macro $(SRCROOT) pour que, si vous déplacez votre projet ou que vous le $(SRCROOT) avec d'autres utilisateurs à l'aide d'un dépôt à distance, cela fonctionne toujours. $(SRCROOT) peut être considéré comme le répertoire contenant votre fichier .xcodeproj. Cela pourrait ressembler à ceci:

$(SRCROOT)/Folder/Folder/<#YourProjectName#>-Bridging-Header.h

Étape 3: Ajouter un en-tête Objective-C - .h

Ajoutez un autre fichier .h et nommez-le CustomObject.h

Étape 4: Construisez votre classe Objective-C

Dans CustomObject.h

#import <Foundation/Foundation.h>

@interface CustomObject : NSObject

@property (strong, nonatomic) id someProperty;

- (void) someMethod;

@end

Dans CustomObject.m

#import "CustomObject.h"

@implementation CustomObject 

- (void) someMethod {
    NSLog(@"SomeMethod Ran");
}

@end

Étape 5: Ajouter la classe à l'en-tête de pontage

Dans YourProject-Bridging-Header.h :

#import "CustomObject.h"

Étape 6: Utilisez votre objet

Dans SomeSwiftFile.swift :

var instanceOfCustomObject: CustomObject = CustomObject()
instanceOfCustomObject.someProperty = "Hello World"
println(instanceOfCustomObject.someProperty)
instanceOfCustomObject.someMethod()

Pas besoin d'importer explicitement, c'est ce que l'en-tête de pont est pour.