下标不可用:不能使用Int下标String

时间:2016-07-31 04:39:15

标签: ios swift

在下面的代码中,我尝试从tableView填充详细信息视图,但不断收到NSIndexPath错误。如果没有'if let indexPath'和[indexPath],它只会返回字典中的第一部分。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let wod = FilteredWodList[index]
    if segue.identifier == "showBenchmarkDetail" {
        let controller = segue.destinationViewController as? BenchmarkWODDetailView
        if let indexPath = self.tableView.indexPathForSelectedRow

        {
        controller?.nameText = wod.name![indexPath.row]
        controller?.descriptionText = wod.description![indexPath.row]
        controller?.exerciseText = wod.exercise![indexPath.row]
        }

我还尝试使用以下扩展名,而不是导致我输入错误'无法将类型字符的值赋值为字符串'。

extension String {
subscript (index: Int) -> Character {
    let charIndex = self.startIndex.advancedBy(index)
    return self[charIndex]
}

subscript (range: Range<Int>) -> String {
    let startIndex = self.startIndex.advancedBy(range.startIndex)
    let endIndex = startIndex.advancedBy(range.count)

    return self[startIndex..<endIndex]
 }
}

https://github.com/Brandon-316/WOD-Guide 位于BenchmarkWODViewController.swift

1 个答案:

答案 0 :(得分:1)

在BenchmarkWODViewController.swift中查看代码的其他部分,您需要修改richTextBox,如下所示:

prepareForSegue

Leo Dabus的评论中已经找到了关键点。