Как определить var снаружи if if и использовать его снаружи - PullRequest
0 голосов
/ 18 марта 2019
var firstname: [String] = []
var year = Int.random(in: 1900 ... 2020)
if (1900 ..< 1910).contains(year){
    if (gender == "male"){
        firstname = _1900s_boysnames_uk.randomElement()
    }
}

Ошибка получения не может присвоить значение типа 'String?' набрать '[String]' для имени Как мне это исправить?

Ответы [ 2 ]

6 голосов
/ 18 марта 2019

firstname переменная относится к типу [String], что означает, что оно должно содержать массив строк.

В строке firstname = _1900s_boysnames_uk.randomElement() вы присваиваете значение String массиву строк.

Чтобы исправить это, вы можете изменить строку на firstname.append(_1900s_boysnames_uk.randomElement()).

0 голосов
/ 18 марта 2019

Вы получили эту ошибку, поскольку массив _1900s_boysnames_uk может быть пустым, поэтому возвращаемое значение из randomElement() также может быть nil, для этого мы считаем возвращаемое значение optional

можешь добавить? int вашей первой строки, что означает, что массив может содержать nil значений, но это не лучший способ

var firstname: [String?] = []

или вы можете использовать этот синтаксис внутри вашего условия if

if let firstname = _1900s_boysnames_uk.randomElement() {
    firstname.append(firstname)
}

Дополнение, пожалуйста

var firstname: [String] = []

Это означает, что переменная «firstname» будет содержать список имен

и чтобы добавить новое имя в список, вы будете использовать «append» как:

firstname.append(_1900s_boysnames_uk.randomElement())

Если вы хотите назначить только имя, используйте:

var firstname: String

в Swift рекомендуется использовать соглашение о присвоении имен в случае верблюдов при именовании переменных. Если вы не знаете о случае верблюда, это соглашение об именах, которое использует строчную букву для первого слова в имени переменной, за которым следует заглавная буква для каждого последующего слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...