Подавить текст, обращенный к пользователю, должен использовать локализованное строковое макроопределение
Я использую нелокализованные строки и получаю предупреждение ниже
Пользовательский текст должен использовать локализованный макрос строки
Как подавить это предупреждение?
Ответы
Ответ 1
От clang документация:
вы можете подавить предупреждения анализатора (и документировать свои намерения) функцией, которая просто возвращает свой ввод, но аннотируется для возврата локализованной строки:
__attribute__((annotate("returns_localized_nsstring")))
static inline NSString *LocalizationNotNeeded(NSString *s) {
return s;
}
[field setStringValue:LocalizationNotNeeded(@"Debug")];
В некоторых проектах также может быть полезно использовать NSLocalizedString, но добавьте "DNL" или "Do not Localize" в содержимое строки
Ответ 2
в настройках проекта:
"Статический анализатор - проблемы - API Apple"
установите "Отсутствует локализуемость" на No
также убедитесь, что у вас нет локализации, иначе xcode 9 предупредит вас снова включить предупреждения анализатора "Отсутствует локализуемость".
Это было сложнее для меня, мне пришлось открыть файл проекта (project.pbxproj) с помощью текстового редактора и вручную удалить список "knownRegions", иначе они не останутся без удаления
Ответ 3
Или просто используйте локализованный макрос строк, как предлагается Xcode:
NSLocalizedString(@"My string that was giving me warnings", nil)
Ответ 4
Другая возможность такова:
[NSMutableString stringWithString:@"Debug"];