ios - Swift:NSString 无法转换为 'String'

标签 ios string swift

我是 Swift 的新手,我试图将一组行返回到一个数组中,但现在我陷入了错误循环。任何帮助,将不胜感激。我可能遗漏了一些东西,但感觉确实不像:

编辑:添加代码(未设置数组的约束)。

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)

    return button
}

func createRowOfButtons(buttonTitles: [NSString]) -> UIView {

    var buttons = [UIButton]()
    let keyboardRowView = UIView()

    for buttonTitle in buttonTitles{

        let button = createButtonWithTitle(buttonTitle as String)
        buttons.append(button)
        keyboardRowView.addSubview(button)
    }

    addIndividualButtonConstraints(buttons, mainView: keyboardRowView)

    return keyboardRowView
}

func createArraysOfButtons (rowTitles: [NSString]) -> UIView{

    var rows = [UIView]()
    let keyArrayView = UIView()

    for rowTitle in rowTitles {
        if let title = rowTitle as? String{
            let row = createRowOfButtons(rowTitle as String)
            rows.append(row)
            keyArrayView.addSubview(row)
        }
    }
    return keyArrayView
}

错误信息:

'NSString' is not implicitly convertible to 'String'; did you mean to use 'as' to explicitly convert?

最佳答案

最简单的解决方案:不要使用 NSString

func createRowOfButtons(buttonTitles: [String]) -> UIView {

    var buttons = [UIButton]()
    let keyboardRowView = UIView()

    for buttonTitle in buttonTitles{

        let button = createButtonWithTitle(buttonTitle)
        buttons.append(button)
        keyboardRowView.addSubview(button)
    }

    addIndividualButtonConstraints(buttons, mainView: keyboardRowView)

    return keyboardRowView
}

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)
    }
    return keyArrayView
}

主要问题是 createRowOfButtons 需要一个字符串数组,但您将单个字符串传递给该方法。 createRowOfButtons([rowTitle]) 解决了这个问题。

关于ios - Swift:NSString 无法转换为 'String',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778343/

相关文章:

ios - 为什么这个 UIViewController 在调用 twitter 后没有更新?

ios - 通过 TabBarController 的 iPad 全屏模态视图?

java - 如何在给定一些参数的情况下切割字符串

java - 删除两个特定标签之间的所有字符(java regex)

ios - 如何访问 Objective-C 中的 Swift 扩展?

ios - 在 Xcode 6 beta 5 中使用 'po' 命令调试选定 View

ios - 我在动画结束后是否太早释放该对象?

ios - UIButton 标签在选择时不尊重先前动画的完成处理程序设置的文本

C++ std::string to char 用于 OpenGL LoadBMP

ios - 如何从@objc 函数在 UIViewController 之间传递数据数组