iOS Utilizzo delle classi Objective-C in Swift

Esempio

Se si dispone di una classe esistente che si desidera utilizzare, eseguire il passaggio 2 e quindi saltare al passaggio 5 . (In alcuni casi, ho dovuto aggiungere un #import <Foundation/Foundation.h esplicito #import <Foundation/Foundation.h a un file ObjC precedente)

Passaggio 1: aggiungere l'implementazione Objective-C - .m

Aggiungi un file .m alla tua classe e CustomObject.m

Passaggio 2: aggiungi intestazione di ponte

Quando aggiungi il tuo file .m , verrai colpito da un prompt simile al seguente:

inserisci la descrizione dell'immagine qui

Clicca !

Se non hai visualizzato il prompt o eliminato accidentalmente l'intestazione di bridging, aggiungi un nuovo file .h al progetto e <#YourProjectName#>-Bridging-Header.h nome <#YourProjectName#>-Bridging-Header.h

In alcune situazioni, in particolare quando si lavora con i framework ObjC, non si aggiunge esplicitamente una classe Objective-C e Xcode non trova il linker. In questo caso, crea il tuo file .h chiamato come sopra menzionato, quindi assicurati di collegare il suo percorso nelle impostazioni del progetto del tuo target in questo modo:

inserisci la descrizione dell'immagine qui

Nota

È consigliabile collegare il progetto usando la macro $(SRCROOT) modo che se si sposta il progetto o si lavori con altri utilizzando un repository remoto, funzionerà comunque. $(SRCROOT) può essere pensato come la directory che contiene il tuo file .xcodeproj. Potrebbe assomigliare a questo:

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

Passaggio 3: aggiungere l'intestazione Objective-C - .h

Aggiungi un altro file .h e CustomObject.h

Step 4: Costruisci la tua classe Objective-C

In CustomObject.h

#import <Foundation/Foundation.h>

@interface CustomObject : NSObject

@property (strong, nonatomic) id someProperty;

- (void) someMethod;

@end

In CustomObject.m

#import "CustomObject.h"

@implementation CustomObject 

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

@end

Passaggio 5: aggiungi classe a Bridging-Header

In YourProject-Bridging-Header.h :

#import "CustomObject.h"

Passaggio 6: utilizza il tuo oggetto

In SomeSwiftFile.swift :

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

Non c'è bisogno di importare esplicitamente, questo è ciò che l'header bridging è per.