Подавить текст, обращенный к пользователю, должен использовать локализованное строковое макроопределение

Я использую нелокализованные строки и получаю предупреждение ниже

Пользовательский текст должен использовать локализованный макрос строки

Как подавить это предупреждение?

Ответ 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"];