swift - 在 swift 中以什么顺序将项目添加到 "map"?

标签 swift

快速浏览中的示例 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html#//apple_ref/doc/uid/TP40014097-CH2-ID1

var occupations = [
  "Malcolm": "Captain",
  "Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"

occupations的最终结果是:

["Kaylee": "Mechanic", "Jayne": "Public Relations", "Malcolm": "Captain"]

我的问题:

  1. var occupations 是 Map 吗?
  2. 添加新项目的顺序是什么?

最佳答案

根据您的编程背景,现有的答案很可能令人困惑。

var occupations = [
  "Malcolm": "Captain",
  "Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations"

鉴于该代码片段,occupations 的类型是 Swift Dictionary .正如其他答案所指出的那样,Swift 中的字典是键值对的集合。

其他语言也有类似的数据结构,但可能用不同的名称来指代它。

这个 list 还可以继续下去。但这些都代表大致相同的数据结构:键值对的存储。

在 Swift 中,字典没有顺序。您从打印或迭代字典中的项目中注意到的任何感知的顺序都是——感知的。它不应该被依赖。

如果你需要一个有序的字典,你需要自己实现它。尽管我确定有人可能已经实现了它,并且您可以在 github 上找到它。有序数据对的一个非常简单的实现可以简单地涉及一个元组数组,但是您将无法像使用字典那样执行相同的键查找。

这里重要的是 Swift 字典中没有定义数据的顺序,因此不应依赖正在发生的任何感知顺序。

关于swift - 在 swift 中以什么顺序将项目添加到 "map"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36967733/

相关文章:

ios - Alamofire 无法处理 UDP 请求吗? NSPOSIXErrorDomain 代码=47

swift - 在 segue 之间推送信息是行不通的

Swift - 坐标不可用 : APIs deprecated as of iOS 7

ios - 将字体大小缩放到标签 iOS Swift 的宽度

协议(protocol)的 Swift 扩展存储

swift - 将保存的锻炼从 Watch 传递到 iPhone

swift - 如果我想从 Codable 中排除一些属性,为什么这些属性必须是可选的?

objective-c - 在同一框架内将私有(private) Objective-C header 导入 Swift

ios - 在 UITableView 的单元格中下载图像的最佳实践?苹果/swift

ios - 我在 pod install Kanna 时遇到错误