【问题标题】:Swift Issue with adding value to array for use within UITableView Controller向数组添加值以在 UITableView 控制器中使用的 Swift 问题
【发布时间】:2017-01-24 16:03:33
【问题描述】:

困惑为什么会出现错误“无法下标'inout [[String]]'(又名'inout Array>')类型的值。在工作表视图类中

(最初遵循 Jared Davidson 教程https://www.youtube.com/watch?v=pR6dR-vVZeY

var secondArray = [SecondTable]()

let latest = ViewController().getArrayListLast()
var latestClass = latest.getFullClasses()

print(latestClass[0])

for i in 0...(latest.getAssetClasses().count)
{
    if SecondTable(secondTitle: latestClass[i]) != nil
    {
       secondArray = secondArray.append(SecondTable(secondTitle: latestClass[i]))
    }
}

【问题讨论】:

  • 默认初始化器ViewController() 在使用情节提要时永远不会起作用。
  • 首先:它可能是一个过时的教程,因为 swift 3 是在 2017 年 9 月开始的 - 最好选择其他教程
  • 请添加(对我来说未知 - 而且我不看 40 分钟视频)函数的代码:.getArrayListLast().getFullClasses().getAssetClasses()SecondTable 的类跨度>

标签: swift uitableview compiler-errors picker


【解决方案1】:

append(_:) 是变异函数,它不返回任何内容。

现在你的代码又犯了 3 个错误。

  1. 正如@vadian 在评论ViewController() 中提到的那样,在使用情节提要时将永远无法工作。

  2. 它会给你运行时崩溃索引超出范围,因为你已经提供了 for 循环直到数组计数,但它应该直到数组计数中的较小者,所以它应该像 for i in 0..<(latest.getAssetClasses().count)

  3. 您正在使用 SecondTable 的 init 创建两次对象以仅检查 nil 而不是您可以使用 if let

    if let secondTable = SecondTable(secondTitle: latestClass[i]) {
       secondArray.append(secondTable)
    }
    

【讨论】:

  • 嘿,1. 可以工作,因为我有另一个名为 ViewController 的主类并且到目前为止一直有效
  • 我应该用什么来代替追加
  • @MatthewClisby 检查我编辑的答案,它只是secondArray.append(secondTable)
猜你喜欢
  • 2017-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多