Получение ошибки «Аргумент не является буквальной строкой» при выполнении команды genstrings

#objective-c

#objective-c

Вопрос:

При попытке выполнить следующую команду: genstrings ./Classes/*.m на терминале я получаю следующую ошибку: Argument is not a literal String . Кто-нибудь знает, в чем может быть проблема?

Комментарии:

1. Пожалуйста, покажите нам строку, о которой идет речь.

2. Я всегда старался подавить это, когда я делаю это специально, где я настраиваю stringVariable (возможно, объединение пары строк), а затем использую NSLocalizedString(stringVariable, @»comment») для выполнения локализации.

Ответ №1:

Проверьте свои исходные файлы, если у вас есть что-то вроде

 NSLocalizedString(stringVariable, @"comment");
  

Возможно, у вас должна быть буквальная строка в этой функции:

 NSLocalizedString(@"literalString", @"comment");
  

Комментарии:

1. Закрыть, но ошибка заключалась в том, что кавычки были неправильно отформатированы, спасибо

2. В моем случае у меня было выше со строковой переменной, но она была закомментирована. К вашему сведению, genstrings все еще видел это

Ответ №2:

В моем случае я получил ошибку, потому что у меня был NSLocalizableString в комментарии (например, «// TODO: измените строку выше на NSLocalizableString перед переходом к производству»). По-видимому, genstrings не игнорирует комментарии.

Ответ №3:

В моем случае импорт NSLocalizedString функции в Swift вызвал эту проблему:

 import func Foundation.NSLocalizedString
  

Я просто временно использовал import Foundation , и это сработало.