#ios #arrays #string #swift #nslocalizedstring
#iOS #массивы #строка #swift #nslocalizedstring
Вопрос:
Я пытаюсь преобразовать некоторый код в Swift, но натыкаюсь на некоторый код для добавления NSLocalizedString
s в свойство массива. Я определил массив как массив String
s. Я пытаюсь добавить объекты, используя =
так же, как указано в документации, но я получаю сообщение об ошибке Could not find an overload for ' =' that accepts the supplied arguments
.
Я уверен, что это простая ошибка, но я пробовал несколько разных комбинаций (добавление as String[]
в конец или после имени переменной, добавление = []
к объявлению и т. Д.) И Не могу заставить его работать. Был бы признателен за некоторое объяснение того, что происходит.
//Property:
var localizedTitles: String[]
//In init:
localizedTitles = [NSLocalizedString("My String", tableName: nil, bundle: nil, value: "My String", comment: "")]
Комментарии:
1.
NSLocalizedString()
это функция, а не тип.2. Спасибо, обновленный вопрос
Ответ №1:
Я вижу три проблемы / комментарии:
- По какой-то причине параметр пакета для NSLocalizedString не является необязательным. Вы должны предоставить ему фактический пакет.
- Вы должны инициализировать массив, прежде чем пытаться добавить к нему.
- Вы можете определить массив как массив строк, поскольку именно это возвращает NSLocalizedString .
Попробуйте это (я добавил несколько новых строк, чтобы сделать его более читаемым в этом формате):
var localizedTitles : [String] = []
localizedTitles = NSLocalizedString(
"My String",
tableName: nil,
bundle: NSBundle.mainBundle(),
value: "My String",
comment: ""
)
Но поскольку некоторые параметры имеют значения по умолчанию, вы можете просто сделать:
var localizedTitles : [String] = []
localizedTitles = NSLocalizedString("My String", value: "My String", comment: "")
Комментарии:
1. Это сделало свое дело. Интересно, в документах указано значение по умолчанию
bundle
, если оно не указано.2. @Joey Ya, я думаю, это относится к тому факту, что параметры имеют параметры по умолчанию, поэтому вы можете просто исключить их из вызова. Я обновил свой ответ выше примером того, как просто их исключить.