Как использовать методы категорий Objective-C NSMeasurement в Swift?

Давайте предположим, что у нас есть категория на NSMeasurement в нашем проекте.

Файл.h (файл.m также существует):

NSMeasurement+Test.h

@interface NSMeasurement (Test)

- (NSString *)foo;

@end

Теперь давайте предположим, что у нас есть класс Swift, в котором мы хотим использовать метод category foo, Проблема здесь в том, что NSMeasurement будет "преобразован" в класс Measurement в Swift. И да, заголовок категории был вставлен в заголовочный файл Brinding.

Вопрос в том, как я могу получить доступ к функции NSMeasurement "foo", хотя она была "мутирована" в класс Measurement в быстром

Любая помощь будет оценена.

1 ответ

Решение

Либо вы должны использовать NSMeasurement или вы можете набрать приведение Measurement в NSMeasurement,

let measurement = Measurement(value: 20, unit: Unit(symbol: "kg")) as NSMeasurement
let value = measurement.foo()
print(value)

Согласно документации NSMeasurement может быть соединен в Measurement но на самом деле это разные вещи. NSMeasurement это class в то время как Measurement это struct,

Если это будет тот же класс, то это будет прямая реализация. Например: если вы создаете расширение UITableView в Objective C тогда вы можете напрямую получить доступ к методам расширения в Swift,

Другие вопросы по тегам