Swift只允许字典包含一种类型.

以下是取自Swift手册的定义:

字典是存储同一类型多个值的容器

[...]

它们不同于Objective-C的NSDictionaryNSMutableDictionary类,后者可以使用任何类型的对象作为键和值,并且不提供有关这些对象性质的任何信息.

如果是这样的话,我们将如何创建嵌套字典?

假设我们有一个plist,其中包含字符串、数组和字典项.如果我只允许持有相同类型的项目(字符串、数组等),那么我将如何使用存储在plist中的不同类型的项目?

如何在Swift的同一本词典中输入不同的类型?

推荐答案

您可以使用字典值的Any类型实现类似plist的嵌套 struct ,这在某种程度上与Objective-C的id类型相对应,但也可以保存值类型.

var response = Dictionary<String, Any>()
response["user"] = ["Login": "Power Ranger", "Password": "Mighty Morfin'"]
response["status"] = 200

编辑:

Any似乎比AnyObject好,因为在上述代码中,response["status"]的类型是Swift.Int,而使用AnyObject的值类型则是__NSCFNumber.

Swift相关问答推荐

如何在Swift 中创建移动的uil标签?

Form中的Divider在macOS上并不完全扩展

如何使 onKeyPress 与 TextField 快速配合使用?

如何使用可搜索在搜索栏中搜索包括>或<?

按数组大小进行类型判断?

Swift UI中视图上的值未更新

在Swift中如何用变量计算0.9的立方

本地对象的异步/等待引用捕获总是安全的还是理论上不安全?

允许为 self 分配新的 struct 值的理由是什么?

Swift-SceneKit-无法从art.scnassets加载.scn文件

如何在 UITableView 中点击图片和标题

响应 UITextField (UIViewRepresentable) 中的特定按键

将内容与工作表顶部而不是中间对齐

如何在 ZStack 中单独下移卡片?

P384 公钥获取IncorrectParameterSize

Swift初始化具有可变ID的重复值数组

获取设备图像比例(例如@1x、@2x 和@3x)

如何在 SwiftUI 中打开 ImagePicker?

哪些版本的 Xcode 支持哪些版本的 Swift?

如何快速从另一个视图控制器重新加载表格视图