Swift3中如何无需转换为NSDictionary将Dictionary存入Set?
解决方案
其实这个问题很容易解决——Swift 4.2及以后的版本中,只要字典的键和值都遵循Hashable协议,Dictionary类型本身就会自动实现Hashable,所以你完全不需要将dic转成NSDictionary,直接操作即可。
正确代码示例
// 定义你的字典 let dic = ["key": "value"] // 声明Set的类型为[String: String](等价于Dictionary<String, String>) var map = Set<[String: String]>() // 直接插入,无需类型转换 map.insert(dic)
为什么这能行?
Swift的Dictionary类型在满足以下条件时会自动遵循Hashable:
- 字典的
Key类型遵循Hashable(这里String是符合的) - 字典的
Value类型遵循Hashable(同样String符合)
所以你的[String: String]字典完全符合Set对元素的要求,直接插入就可以正常工作。
如果是Swift 4.2之前的旧版本(现在几乎没人用了),你可能需要手动为字典实现Hashable,但针对当前主流的Swift版本,上面的代码就足够解决问题了。
内容的提问来源于stack exchange,提问作者Ycong
相关产品推荐
相关产品推荐

