2015-08-04 2 views
0

Я работаю над приложением iOS, написанным в Objective C, которое имеет прикрепленный класс, написанный в Swift. Когда я пытаюсь вызвать a в моем Obj C AppDelegate.m, я не получаю никаких ошибок, но обратный вызов ответа никогда не срабатывает.Невозможно вызвать метод из класса быстрого в Objective C

Мой ObjC имеет следующие методы:

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo))reply { 

    NSString *success =[ApiController handleCall]; 
    //NSString *success =[self hello]; // This works if you swap it with the above method 
    //NSString *success = @"hello"; // when uncommented this also works. 

    NSDictionary *dict = @{@"status" : success}; 

    reply(dict); 
} 

-(NSString *)hello{ 
    return @"hello"; 
} 

NSString *success = [SwiftClass swiftMethod];

Мой быстры класс выглядит следующим образом:

@objc class SwiftClass { 
    @objc func swiftMethod()->NSString{ 
     return "it works!" 
    } 
} 

В дополнение к выше коде, я убедился включите #import "ProjectName-Swift.h", а также создайте заголовок моста для быстрого кода.

Я ничего не пропустил?

+1

Ваш код не ясно - Ваш вызов ' swiftMethod' фактически внутри метода? Вы называете его экземпляром 'SwiftClass' или вы буквально называете' [SwiftClass swiftMethod] '? Последнее не будет работать, потому что 'swiftMethod' не является методом типа. – Paulw11

+1

«У меня нет ошибок, но код просто». ??? –

ответ

6

swiftMethod является экземпляром метода не класса метода. Вы можете назвать это так:

NSString *success = [[SwiftClass new] swiftMethod]; 

Если вы хотите назвать это как метод класса, то вам необходимо объявить его с class:

@objc class SwiftClass { 
    @objc class func swiftMethod()->NSString{ 
     return "it works!" 
    } 
} 
Смежные вопросы