无法下标NSInteger类型的值

时间:2016-01-30 03:41:10

标签: ios xcode swift

我有以下代码。

var caseRate = [NSInteger]()

    // Configure the cell...
    casecell.casename.text = caseName[indexPath.row]
    casecell.casecontent.text = caseDetail[indexPath.row]
    casecell.caserate.text = caseRate [indexPath.row] 

此行显示错误:

    casecell.caserate.text = caseRate? [indexPath.row] 
  

无法将'NSNumber'类型的值转换为预期的参数类型'NSInteger'(又名'Int')

我尝试过在其他问题中找到的不同解决方案,例如使用后卫,没有运气。

2 个答案:

答案 0 :(得分:2)

如果你真的需要使用NSIntegers而不是Swift类型的Int,你可以使用NSNumber.integerValue来获取NSInteger。

编辑: 这个问题比我想象的更简单。字面上只是使用字符串插值。 casecell.caserate.text = "\(caseRate[indexPath.row])"

答案 1 :(得分:2)

你可以将你的代码迅速转换为:

struct Case {
    let name: String
    let detail: String
    let rate: Int
}

let cases = [Case]()

// Configure the cell...
let case = cases[indexPath.row]
casecell.casename?.text = case.name
casecell.casecontent?.text = case.detail
casecell.caserate?.text = String(case.rate)

这使您不必维护三个独立的案例信息数组,以及由不一致的数组count导致的任何异常。