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

无法将“Int”类型的值转换为预期的参数类型“Dictionary”。'索引'

骆利
2023-03-14

我得到错误“无法将类型‘Int’的值转换为预期的参数类型‘Dictionary’。第8行的索引' '

var namesDictionary = [String: [classObject]]()

func checkFavoriteCount(table:UITableView)
{
    favArray.removeAll()
    for x in (0...namesDictionary.keys.count - 1)
    {
        let k = namesDictionary[x].key
        for y in (0...namesDictionary[x].value.count - 1)
        {
            if (namesDictionary[k]?[y].isFav ?? false)
            {
                favArray.append((namesDictionary[k]?[y])!)
            }
        }
    }
    tableView.reloadData()
}

共有1个答案

薛博赡
2023-03-14

并非Swift中的每个集合都由Int索引。迭代集合时,应该始终使用集合索引。请注意,在Swift中使用单个字母表示变量并不是一种好的做法,除非您使用类似(x,y)的坐标:

func checkFavoriteCount(table: UITableView) {
    favArray.removeAll()
    for index in namesDictionary.indices {
        let key = namesDictionary[index].key
        for valueIndex in namesDictionary[index].value.indices {
            if let object = namesDictionary[key]?[valueIndex], object.isFav {
                favArray.append(object)
            }
        }
    }
}

或者简单地使用高阶方法:

func checkFavoriteCount(table: UITableView) {
    favArray = namesDictionary.flatMap(\.value).filter(\.isFav)
    // or filtering while flattening
    // favArray = namesDictionary.flatMap { $0.value.filter(\.isFav) }
}
 类似资料:
  • 我是斯威夫特的新人,现在尽我所能地学习这个。我写了得到参数的函数:数字和函数,它们与这个数字一起工作: 但是编译给出错误。当我试图改变论点时,比如

  • 我不知道如何将类型的值转换为预期的参数类型,用于在以下代码中: 如何为编写

  • 我正在保存所有数据,代码写在单独的类中。它显示了一个错误,即无法将类型为“Int”的值转换为预期的参数类型“字符串”。请帮我解决这个问题。 以下是我保存所有数据的类: 这是ViewController.swift文件: 遇到错误: 无法将“Int”类型的值转换为预期的参数类型“String”

  • 我是SwiftUI的新来者。现在我需要使用@绑定var电影:与列表页面绑定的编辑视图中的电影,但是当我将其应用于下面的代码时,错误刚刚发生。 无法将“Binding”类型的值转换为预期的参数类型“Int” 那我该怎么处理这个案子,期待你的帮助。 顺便问一下,我如何在“progress”中使用绑定类型,如:它还报告Err,无法将类型“Int”的值转换为预期的参数类型“Binding” 我有另一个问题

  • 我在玩代码。我在GitHub上找到的(https://github.com/avijeets/ConnectFour)被一个我无法清除的错误彻底难住了。 错误是: "无法将“[[CFCellState]]”类型的值转换为预期的参数类型“Int”" VC顶部的代码,其中定义了: 发生错误的代码:

  • 问题内容: 我通过以下方式添加: 现在,我在中的关键字上收到以下错误消息: 我在所有其他功能中都使用了该功能,但从未遇到此错误 问题答案: 更改为。 我不确定编译器到底在想什么(或者它的疯狂错误消息来自何处),但是我的猜测是: 在Swift中,必须先初始化变量,然后才能使用。造成这种情况的一个原因是,编译器无法验证不会尝试调用其获得的所有内容,或执行其他操作,例如访问将在之后初始化的其他变量,这取