【问题标题】:How can I correctly set and use a Dictionary?如何正确设置和使用字典?
【发布时间】:2015-04-12 11:27:15
【问题描述】:

我想设置这个结构:

0:[
    "name"="My Name",
    "description"="Some Description"
  ],
1:[
    "name"="Some Name"
    "description"="Some other Description"
  ]
]

这是我如何启动我的字典:

var topStandbyUsers = [Int:[String:String]]()

这是我的设置方式(这里也有错误):

self.topStandbyUsers[0] = ["fullname"="My Name","description"="Some description"] // this gives me a error

我希望以后能够访问它,例如:

self.topStandByUsers[0]["name"] // I want it to give "My Name"

在使用字典方面没有太多经验,想澄清一下我做错了什么以及如何正确使用字典。

【问题讨论】:

  • 为什么要外部字典的整数键,而不是使用数组?
  • @HotLicks 我不确定是否可以使用索引来调用字典。当我一次浏览字典时,我想访问一段数据。它们将是单独的调用,因此我无法使用 for 循环遍历字典。
  • 好吧,你不会“调用”任何东西,当然也不必通过循环遍历数组。
  • @HotLicks 谢谢,你的想法很有意义,绝对是我可以使用的另一种方法。我只是在整个过程中都在使用字典。您知道使用一种与另一种是否会影响性能或存在差异?
  • 一般来说数组比较快。

标签: ios swift dictionary nsdictionary


【解决方案1】:

问题在于您在以下代码中使用的赋值运算符:

self.topStandbyUsers[0] = ["fullname"="My Name","description"="Some description"]

将其更改为:

self.topStandbyUsers[0] = ["fullname":"My Name","description":"Some description"]

您可以使用以下方法检索值:

var data = self.topStandbyUsers[0]!
println(data["fullname"])

【讨论】:

  • 这消除了错误,谢谢。我将如何访问第一个索引的“全名”?
  • @jshah:我已经添加了检索数据的代码。请检查编辑后的答案
  • 谢谢。我有一个问题,为什么我必须做 2 个陈述。为什么我只能做 var fullname = self.topStandbyUsers[indexPath.row]["fullname"]! ? (给我一个错误)
  • 你的!唱歌不在同一个地方
  • @jshah:你可以像这样使用:var fullname = self.topStandbyUsers[indexPath.row]!["fullname"]!
【解决方案2】:

我看到您已经接受了答案,但我仍然认为像 Hot Licks 一样,您应该考虑使用字典数组,而不是字典字典。

基本上:

var topStandbyUsers = [[String:String]]()

除了它是一个数组之外,你得到了同样的东西。您可以使用相同的方式或使用 append 添加 dicts。

self.topStandbyUsers[0] = ["fullname":"My Name","description":"Some description"]
self.topStandbyUsers.append(["fullname":"My Name","description":"Some description"])

那么你检索数据的工作方式就像

self.topStandByUsers[0]["name"]!

【讨论】:

  • 这是我最初设想的方式。谢谢你,我可能会以这种方式实现它。为您投票,但将另一个答案保留为已接受的答案,因为它回答了原始问题。
猜你喜欢
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 2023-03-08
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多