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]”作为名字 我该如何解决?
答案 0 :(得分:6)
firstname
变量是[String]
上的一种类型,表示应包含字符串数组。
在firstname = _1900s_boysnames_uk.randomElement()
行上,您将String
的值分配给字符串数组。
要解决此问题,您可以将行更改为firstname.append(_1900s_boysnames_uk.randomElement())
。
答案 1 :(得分:0)
您收到此错误,因为数组def _exec_crf_test(input_text, model_path):
with tempfile.NamedTemporaryFile() as input_file:
input_file.write(utils.export_data(input_text))
input_file.flush()
return subprocess.check_output(
['crf_test', '--verbose=1', '--model', model_path, file.name]).decode('utf-8')
可能为空,因此_1900s_boysnames_uk
的返回值也可能为randomElement()
,为此我们将返回值视为{{ 1}}
您可以添加?插入第一行,这意味着数组可以包含nil
值,但这不是更好的方法
optional
或者您可以在if条件中使用此语法
nil
var firstname: [String?] = []
这意味着变量“名字”将包含一个名称列表
并向列表中添加新名称,您将使用“ append”,例如:
if let firstname = _1900s_boysnames_uk.randomElement() {
firstname.append(firstname)
}
如果只想给它分配一个名称,请使用:
var firstname: [String] = []
Swift中的建议是在命名变量时使用驼峰式命名约定。如果您不知道骆驼的大小写,则是一种命名约定,在变量名中的第一个单词使用小写字母,随后的每个单词使用大写字母。