当前位置: 首页 > 知识库问答 >
问题:

如何修复“无法将类型”字符串“的值转换为预期的参数类型”Int“在此for循环中

安奇
2023-03-14

在数小时试图寻找答案后,我正式被难住了。

我有一个字符串数组:

let artists = ["Robben Ford", "Joe Bonamassa", "Eric Clapton", "Matt Schofield"]

现在,我想迭代该数组,如下所示:

func refresh() {
    for artist in artists {
       let indexPath = NSIndexPath(forItem: artist, inSection: 0) <---- Error
       if let cell = tableView.cellForRowAtIndexPath(indexPath) {
          cell.textLabel?.text = artist
      }
}

Xcode在let indexPath语句中抱怨,“无法将“String”类型的值转换为预期的参数类型“Int”。我知道它期望forItem是一个Int,但我不知道如何使其成为一个Int。

我尝试将for循环更改为

for artist in artists.enumerate() {
     }

但随后它只是说它不能convert '(index:Int,element: String)”。

对一个非初学者来说,这个解决方案肯定是显而易见的,但对我来说却不是显而易见的。

提前谢谢。

共有2个答案

桑睿识
2023-03-14

初学者的解决方法很简单:

for artist in artists.enumerate() {
    let indexPath = NSIndexPath(forItem: artist.index, inSection: 0)
    if let cell = tableView.cellForRowAtIndexPath(indexPath) {
        cell.textLabel?.text = artist.element
    }
}

问题是,您试图将一个“artist”< code > String 传递给< code>NSIndexPath(forItem: Int,inSection: Int)初始化器的< code>forItem参数。如您所见,它需要2个< code>Int参数。所以@ a host的回答是正确的,你只是错过了他的最后一句话。

卜阳
2023-03-14

它不起作用,因为您传入的是字符串,而不是字符串的索引。尝试

for (index, artist) in artists.enumerate()

,然后传入索引。

 类似资料: