json - 上下文类型 'AnyObject' 不能与字典文字一起使用 - 数据结构不一致

标签 json swift dictionary

我正在尝试在 swift 中设置一个简单的字典:

var dict = [
  "_id": "123",
  "profile": [
    "name": "me",
    "username": nil,
  ]
] as [String : Any]

然而,Contextual type 'AnyObject' cannot be used with dictionary literal 失败了。正在关注this question ,我尝试用 [String : [String : Any]] 替换 [String : Any],但这在逻辑上失败了,因为第一个值的类型是 String 而不是 [String : Any]

我只想拥有一些东西来保存我可以表示为 json 的任何类型的数据,而且我可以接受在以后尝试访问它们时必须进行 guard-cast 处理。

最佳答案

Swift 是一种严格类型的语言,所以问题是当你将 nil 添加到字典时,它无法知道它的是什么类型这样它会提示说类型不明确。

您可以通过执行以下操作来指定字典的键和值的类型:

let profile: [String: AnyObject?] = ["name": "me", "username": nil]    
let dict = ["_id": "123", "profile": profile] as [String : Any]

或者,您可以使用 init(dictionaryLiteral:)创建字典的构造函数:

let dict = [
  "_id": "123",
  "profile": Dictionary<String, AnyObject?>(dictionaryLiteral: ("name", "me"), ("username", nil))
] as [String : Any]

关于json - 上下文类型 'AnyObject' 不能与字典文字一起使用 - 数据结构不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39219470/

相关文章:

ios - 如何在 TableView 中查找已编辑文本字段的索引

c# 文件校验和函数

mongodb - 从对象数组删除键值时出错

.net - 哈希表/字典但键由多个值组成?

json - 将 Google 电子表格转换为 JSON 提要

java - 如何使用 java 将 json 数组添加到表中以便我可以传递 cookie?

android - google-services.json在创建我的应用程序的产品样式时导致问题,可能的解决方法?

ios - Facebook Graph 请求返回姓名但不返回电子邮件

ios - 如何根据String长度获取CGFloat/CGSize?

c# - 无法加载文件 Newtonsoft Json