Синтаксис для вызова функции расширения Swift из Objective-C - PullRequest
2 голосов
/ 02 апреля 2019

У меня есть проект с target-c и swift.Все правильно подключено, поэтому я могу без проблем вызывать расширения на классах.В этом случае, однако, я должен передать аргумент расширению, и я зациклен на синтаксисе.

Вот расширение Swift 3

extension Double {
    /// Rounds the double to decimal places value
    func rounded(toPlaces places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return (self * divisor).rounded() / divisor
    }
}

Из Swift вы можете вызватьэто с

let x = Double(0.123456789).rounded(toPlaces: 4)

В Objective-C не работает следующее: я поиграл с этим, но не могу получить правильный синтаксис:

double test = 0.123456789;
double roundedtot = test.roundedToPlaces:2;

Конкретная ошибка

'Базовый тип ссылки на элемент' double 'не является структурой или объединением'

, который я собираю, является ошибкой переменного тока, но, поскольку вы можете вызывать функцию в swift, кажется, что она существуетдолжен быть способ назвать это в Objc-C

1 Ответ

2 голосов
/ 02 апреля 2019

Вам нужно добавить @objc к определению расширения, чтобы вызвать его из Objective-C.

Также важно отметить, что только расширения для классов ( не для структур или перечислений) доступны из Objective-C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...