Расширение тестовой строки в Objective c - PullRequest
0 голосов
/ 26 мая 2020

У меня есть это в моем проекте -

extension String {
    func doSomething() -> String {
        return "doSomething"
    }
}

Я пытаюсь написать для него тест Objective C. (Это SDK, который может использоваться проектами Objective C), но при вызове -

NSString* actualResult = [string doSomething];

я получаю эту ошибку -

No visible @interface for 'NSString' declares the selector 'doSomething'

Как это можно сделать ?

1 Ответ

2 голосов
/ 26 мая 2020

Я пробовал использовать NSString, но появляется та же ошибка, @ obj c можно добавлять только к классам, а не к структурам

Только добавления @objc недостаточно , чтобы получить доступ к быстрой функции внутри вашего файла Objective- C, вам необходимо импортировать <ProductModuleName>-Swift.h в свой .m файл

Например

#import <Foundation/Foundation.h>
#import "StackOverflow-Swift.h"

@interface SampleClass : NSObject

@end

@implementation SampleClass

- (void)test {
    NSString *testing = @"abcd";
    [testing doSomething];
}


@end

Наконец

public extension NSString {
    @objc func doSomething() -> String {
        return "doSomething"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...