我在我的一个项目得到的错误:“[[字符串]”到期望的参数类型“[字符串]”
无法将类型的价值“[[字符串]”以预期参数类型'[String]'
我完全理解这个错误;数组中的数组中的数组中的字符串不能作为数组中的字符串进行铸造。但我遇到的问题是一个解决方法。我试图做的是返回一串标题作为按钮,它被铸造成7行,它被铸成一组4行。所以按钮从字符串转换为UIButton,行是数组作为UIViews转换,而组是作为UIViews转换的数组。但是当我去演员时,这是我得到错误的时候。下面是相关的代码,任何帮助将非常感谢(抱歉坏英文):
let buttonTitles1 = ["1","2","3","4","5","6","7"]
let buttonTitles2 = ["1","2","3","4","5","6","7"]
let buttonTitles3 = ["1","2","3","4","5","6","7"]
let buttonTitles4 = ["1","2","3","4","5","6","7"]
let row1 = buttonTitles1
let row2 = buttonTitles2
let row3 = buttonTitles3
let row4 = buttonTitles4
let matrixTitle1 = [buttonTitles1, buttonTitles1, buttonTitles1, buttonTitles1]
let matrixTitle2 = [buttonTitles1, buttonTitles1, buttonTitles1, buttonTitles1]
let matrix1 = createArraysOfButtons(matrixTitle1)
let matrix2 = createArraysOfButtons(matrixTitle2)
keyBoardKeys.addSubview(matrix1) //ERROR
keyBoardKeys.addSubview(matrix2) //ERROR
//BUTTON FUNCTION
func createButtonWithTitle(title: String) -> UIButton {
let button = UIButton(type:.System) as UIButton
button.translatesAutoresizingMaskIntoConstraints = false
button.setTitle(title, forState: .Normal)
button.sizeToFit()
button.titleLabel!.font = UIFont.systemFontOfSize(15)
button.backgroundColor = UIColor.greenColor()
button.setTitleColor(UIColor.whiteColor(), forState: .Normal)
print("BUTTON")
return button
}
//ROW FUNCTION
func createRowOfButtons(buttonTitles: [String]) -> UIView {
var buttons = [UIButton]()
let keyboardRowView = UIView()
keyboardRowView.translatesAutoresizingMaskIntoConstraints = false
for buttonTitle in buttonTitles{
let button = createButtonWithTitle(buttonTitle as String)
buttons.append(button)
keyboardRowView.addSubview(button)
}
addIndividualButtonConstraints(buttons, mainView: keyboardRowView)
print("ROW")
return keyboardRowView
}
//MATRIX FUNCTION
func createArraysOfButtons (rowTitles: [String]) -> UIView {
var rows = [UIView]()
let keyArrayView = UIView()
for rowTitle in rowTitles {
let row = createRowOfButtons([rowTitle])
rows.append(row)
keyArrayView.addSubview(row)
}
addConstraintsToInputView(rows, mainView: keyArrayView)
print("MATRIX")
return keyArrayView
}
看起来你需要改变你的' createArraysOfButtons'方法取代'[[String]]'而不是'[String]',然后将您传递给'createRowOfButtons'的'[rowTitle]'更改为'rowTitle' – dan
好了,那很奏效。把它作为答案,我会标记它。所以它应该是'[[String]]'因为它的String/Array/Array和'rowTitle'而不是'[rowTitle]'因为它没有被作为数组转换。我的理解是否正确? – Geppelt