Mam stary projekt Objective-C i chcę wywołać nową funkcję i obiekt Swift, utworzyłem plik „ <ProjectName>-Bridging-Header.h” i „ <ProjectName>-Swift.h”
było mi łatwo wywołać funkcję ze Swift na Objective-C, ale mam problem z odwróceniem.
Utworzyłem więc prostą klasę „System.Swift”
import Foundation
@objc class System : NSObject {
@objc func printSome() {
println("Print line System");
}
}
teraz próbuję postępować zgodnie z dokumentacją tutaj i wewnątrz <...>-Swift.hpliku, który to napisałem
@class System;
@interface System : NSObject
-(void)printSome;
@end
i zaimportowałem go do mojej klasy Objective-C. W tym momencie w mojej klasie Objective C (obecnie UIViewController) mojego kodu Objective-C próbuję wywołać metodę "printSome":
- (void)viewDidLoad
{
[super viewDidLoad];
System * sis = [[System alloc] init];
[sis printSome];
//any additional setup after loading the view from its nib.
}
teraz mam następujący błąd:
Niezdefiniowane symbole dla architektury i386: „ OBJC_CLASS $ _System”, odniesienie do: objc-class-ref w „ObjectiveC_Class_That_Call_Swift_Object” .o ld: nie znaleziono symboli dla architektury i386 clang: błąd: polecenie konsolidatora nie powiodło się z kodem zakończenia 1 (użyj -v, aby zobaczyć wywołanie)