当前位置: 首页 > 面试题库 >

尝试追加/替换数组元素时出现“对成员映射的模糊引用”

龚玄天
2023-03-14
问题内容

像这样的几个SO帖子处理相同的错误消息,但是这些解决方案均无效。看起来这可能是误导性错误消息的情况。

下面的代码为映射调用生成“对成员映射的歧义引用”错误。

有人知道为什么吗?

func saveUser(user: User) {
    var userDicts = masterDict["users"] as! [[String:AnyObject]]
    let newDict = user.getDict()

    // Replace matching element with <newDict>
    let replaced = false
    masterDict["users"] = userDicts.map {
        if ($0["id"] as String! == user.getId()) {
            replaced = true
            return newDict
        } else {
            return $0 as [String:AnyObject]
        }
    }

    // If no match found, means must add new user
    if (!replaced) {
        userDicts.append(newDict)
    }
}

问题答案:

不幸的是,swift并不完美,无法始终推断类型,这就是为什么您获得含糊不清的引用。尝试userDicts.map {val -> [String:AnyObject] in并替换$0为,val
这将明确告知地图输入的值是[String:AnyObject],并且应该能够返回所述类型



 类似资料:
  • 问题内容: 我正在尝试使用JAXB将以下XML映射到POJO,以便可以使用XML中的数据,但是,出现以下错误: XML: 我的POJO(故意将getter / setter从问题中跳过) ItemSearchResponse 物品 项目 项目属性 问题 我该如何解决错误?我的POJO设置不正确吗?如果是这样,我应该如何重组POJO? xml中有多个。如何将它们映射到数组或排序列表。 问题答案: 您

  • 如何获取groovy映射的键/值对值并循环到groovyJSON数组元素中?。 例如: 输入: def childmap = ["data1": "123 "," data2": "234 "," data3": "456"] def儿童地图2=["data4":"123","data5":"234","data6":"456","date7":"676"] def父母地图=["Key1":"Va

  • 我将下面的jsonb数据存储在如下的表列中: 我需要向json数组中的所有对象添加一个元素“License”:“Property”,如下所示: 我在这里添加了sql小提琴链接:https://dbfiddle.uk/?rdbms=postgres_11 提前谢谢。

  • 我有一个方法,我输入一个包含4个对象的数组,它创建一个新的对象数组,复制之前的4个对象,然后再向数组中添加一个。但我一直有例外。

  • 我正在尝试从地图转换键iterable,但当我这样做时,我得到错误: 统计数字produceTypeData。钥匙不是一种功能 我将遵循这个问题的答案:如何将映射键转换为数组?让它工作。 当我尝试另一种方法(使用)时,我得到一个不同的错误,即: 类型IterableIterator不是数组类型。 在评论中我读到,在本例中,应该将数组括起来。扩展语法中的from()语句,但当我这样做时,我也会得到错

  • 本文向大家介绍在Perl中替换数组元素,包括了在Perl中替换数组元素的使用技巧和注意事项,需要的朋友参考一下 现在我们将引入另一个名为splice()的函数,该函数具有以下语法: 语法 此函数将删除由OFFSET和LENGTH指定的@ARRAY元素,如果指定,则将其替换为LIST。最后,它返回从数组中删除的元素。以下是示例- 示例 输出结果 这将产生以下结果- 在这里,实际替换从第6个数字开始,