Ho un vecchio progetto Objective-C e voglio chiamare una nuova funzione e oggetto Swift, devo creare il file " <ProjectName>-Bridging-Header.h
" e " <ProjectName>-Swift.h
"
è stato facile per me chiamare la funzione da Swift a Objective-C ma ho un problema per il contrario.
Quindi ho creato una semplice classe "System.Swift"
import Foundation
@objc class System : NSObject {
@objc func printSome() {
println("Print line System");
}
}
ora devo provare a seguire la documentazione qui e all'interno del <...>-Swift.h
file ho scritto questo
@class System;
@interface System : NSObject
-(void)printSome;
@end
e l'ho importato nella mia classe Objective-C. A questo punto all'interno della mia classe Objective C (attualmente UIViewController) del mio codice Objective-C provo a chiamare il metodo "printSome":
- (void)viewDidLoad
{
[super viewDidLoad];
System * sis = [[System alloc] init];
[sis printSome];
//any additional setup after loading the view from its nib.
}
ora ho il seguente errore:
Simboli indefiniti per l'architettura i386: " OBJC_CLASS $ _System ", referenziato da: objc-class-ref in "ObjectiveC_Class_That_Call_Swift_Object" .o ld: symbol (s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v per vedere l'invocazione)