Использование блока завершения Swift с обнуляемым значением String в Objective-C - PullRequest
0 голосов
/ 28 июня 2018

У меня есть функция Swift, подпись которой следующая:

func detectLanguage(forString string: String, completion: @escaping (String?) -> Void)

В некоторых случаях возвращает строку, в других - ноль.

Когда я получаю автозаполнение в моих файлах obj-c, вот что я получаю:

[translator detectLanguageForString:@"foo" completion:^(NSString * _Nonnull) {
    // some code
}];

Если я немного изменю блок:

[translator detectLanguageForString:@"foo" completion:^(NSString *lang _Nullable) {

Xcode выдает очень расплывчатую ошибку:

Ожидается ')'

Как правильно заставить этот блок завершения работать безопасно? Спасибо.

1 Ответ

0 голосов
/ 28 июня 2018

Блок Objective-C нуждается в параметре, который идет после типа NSString * _Nullable

[translator detectLanguageForString:@"foo" completion:^(NSString * _Nullable lang) {
    // ...
}];
...